Merge changes I5c6ad4b3,Icb00b3fc

* changes:
  [MEP] renew the default data selection UI
  [MEP] renew the sim confirm dialog UI
diff --git a/Android.bp b/Android.bp
index 2c3b2ec..0116237 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,7 +59,6 @@
         "com.google.android.material_material",
         "setupcompat",
         "setupdesign",
-        "androidx-constraintlayout_constraintlayout-solver",
         "androidx.lifecycle_lifecycle-runtime",
         "androidx.lifecycle_lifecycle-extensions",
         "guava",
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 551e703..9147605 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -110,6 +110,9 @@
     <uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION" />
     <uses-permission android:name="android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK" />
     <uses-permission android:name="android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS" />
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+    <uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES" />
+    <uses-permission android:name="android.permission.QUERY_ADMIN_POLICY" />
 
     <application
             android:name=".SettingsApplication"
@@ -146,10 +149,11 @@
         <!-- Activity for launching deep link page in 2-pane. -->
         <activity android:name=".homepage.DeepLinkHomepageActivity"
                   android:label="@string/settings_label_launcher"
-                  android:theme="@style/Theme.Settings.Home"
+                  android:theme="@style/Theme.Settings.Home.DeepLink"
                   android:taskAffinity=""
                   android:launchMode="singleTask"
                   android:exported="true"
+                  android:enabled="false"
                   android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout"
                   android:permission="android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK">
             <intent-filter>
@@ -162,7 +166,7 @@
 
         <activity android:name=".homepage.SliceDeepLinkHomepageActivity"
                   android:label="@string/settings_label_launcher"
-                  android:theme="@style/Theme.Settings.Home"
+                  android:theme="@style/Theme.Settings.Home.DeepLink"
                   android:taskAffinity=""
                   android:launchMode="singleTask"
                   android:exported="false"
@@ -196,7 +200,6 @@
         </receiver>
 
         <activity android:name=".SubSettings"
-                  android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize"
                   android:theme="@style/Theme.SubSettings" />
 
         <activity android:name=".Settings$CreateShortcutActivity"
@@ -236,11 +239,14 @@
                 android:value="true" />
         </activity>
 
-        <activity android:name=".network.telephony.MobileNetworkActivity"
-                  android:label="@string/network_settings_title"
-                  android:exported="true"
-                  android:launchMode="singleTask"
-                  android:configChanges="orientation|screenSize|keyboardHidden">
+        <activity
+            android:name=".Settings$MobileNetworkActivity"
+            android:label="@string/network_settings_title"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:launchMode="singleInstance"
+            android:exported="true">
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.network.telephony.MobileNetworkSettings"/>
             <intent-filter android:priority="1">
                 <!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. -->
                 <action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" />
@@ -307,6 +313,7 @@
 
         <receiver android:name=".search.SearchStateReceiver"
                   android:exported="true"
+                  android:enabled="false"
                   android:permission="android.permission.READ_SEARCH_INDEXABLES">
             <intent-filter>
                 <action android:name="com.android.settings.SEARCH_START"/>
@@ -370,6 +377,16 @@
         </activity>
 
         <activity
+            android:name="Settings$NetworkSelectActivity"
+            android:label="@string/choose_network_title"
+            android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize">
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.network.telephony.NetworkSelectSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
+        </activity>
+
+        <activity
             android:name="Settings$WifiDetailsSettingsActivity"
             android:label="@string/wifi_details_title"
             android:icon="@drawable/ic_homepage_network"
@@ -522,7 +539,6 @@
 
         <activity android:name="Settings$ApnSettingsActivity"
                 android:label="@string/apn_settings"
-                android:launchMode="singleTask"
                 android:exported="true"
                 android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
@@ -817,6 +833,18 @@
         </activity>
 
         <activity
+            android:name=".applications.appinfo.AppLocalePickerActivity"
+            android:label="@string/app_locale_picker_title"
+            android:exported="true" >
+            <intent-filter>
+                <action android:name="android.settings.APP_LOCALE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
+        </activity>
+
+        <activity
             android:name=".Settings$LanguageAndInputSettingsActivity"
             android:label="@string/language_settings"
             android:exported="true"
@@ -1269,6 +1297,23 @@
         </activity>
 
         <activity
+            android:name=".Settings$BlueToothPairingActivity"
+            android:label="@string/bluetooth_pairing_page_title"
+            android:permission="android.permission.BLUETOOTH_SCAN"
+            android:exported="true">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.BLUETOOTH_PAIRING_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.bluetooth.BluetoothPairingDetail" />
+            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+                       android:value="@string/menu_key_connected_devices"/>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity>
+
+        <activity
             android:name="SettingsLicenseActivity"
             android:label="@string/settings_license_activity_title"
             android:exported="true"
@@ -2104,8 +2149,7 @@
             android:screenOrientation="portrait"/>
 
         <activity android:name=".biometrics.BiometricHandoffActivity"
-                  android:exported="false"
-                  android:screenOrientation="portrait"/>
+                  android:exported="false"/>
 
         <!-- Must not be exported -->
         <activity android:name=".biometrics.BiometricEnrollActivity$InternalActivity"
@@ -2931,6 +2975,12 @@
         </activity>
 
         <activity
+            android:name=".users.AddSupervisedUserActivity"
+            android:label="@*android:string/supervised_user_creation_label"
+            android:icon="@drawable/ic_settings_multiuser">
+        </activity>
+
+        <activity
             android:name="Settings$PaymentSettingsActivity"
             android:label="@string/nfc_payment_settings_title"
             android:exported="true"
diff --git a/res/drawable/ic_settings_safety_center.xml b/res/drawable/ic_settings_safety_center.xml
new file mode 100644
index 0000000..f43359f
--- /dev/null
+++ b/res/drawable/ic_settings_safety_center.xml
@@ -0,0 +1,29 @@
+<!--
+  ~ 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.
+  -->
+<!-- TODO(b/208624929): Update to an UX approved icon. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="24"
+    android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M12,15m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M18.5,1C16.01,1 14,3.01 14,5.5V8H6c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V10c0,-1.1 -0.9,-2 -2,-2h-2V5.5C16,4.12 17.12,3 18.5,3C19.88,3 21,4.12 21,5.5V6h2V5.5C23,3.01 20.99,1 18.5,1zM18,10v10H6V10H18z"/>
+</vector>
\ No newline at end of file
diff --git a/res/layout/add_supervised_user.xml b/res/layout/add_supervised_user.xml
new file mode 100644
index 0000000..b95e0f7
--- /dev/null
+++ b/res/layout/add_supervised_user.xml
@@ -0,0 +1,26 @@
+<?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.
+  -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="match_parent">
+    <Button
+        android:id="@+id/createSupervisedUser"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:text="@*android:string/supervised_user_creation_label" />
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/app_locale_details_description.xml b/res/layout/app_locale_details_description.xml
new file mode 100644
index 0000000..989f6c9
--- /dev/null
+++ b/res/layout/app_locale_details_description.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal" >
+    <TextView
+        android:id="@id/description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="15dip"
+        android:layout_marginRight="6dip"
+        android:layout_marginTop="6dip"
+        android:textAlignment="center"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/biometric_handoff.xml b/res/layout/biometric_handoff.xml
index 4861568..7da4917 100644
--- a/res/layout/biometric_handoff.xml
+++ b/res/layout/biometric_handoff.xml
@@ -17,8 +17,8 @@
 
 <com.google.android.setupdesign.GlifLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    style="?attr/face_layout_theme"
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
-</com.google.android.setupdesign.GlifLayout>
\ No newline at end of file
+    android:layout_height="match_parent"
+    android:icon="@drawable/ic_lock">
+</com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/dialog_sim_status.xml b/res/layout/dialog_sim_status.xml
index 27d12a8..c169e58 100644
--- a/res/layout/dialog_sim_status.xml
+++ b/res/layout/dialog_sim_status.xml
@@ -166,6 +166,7 @@
             android:id="@+id/esim_id_value"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:textIsSelectable="true"
             android:text="@string/device_info_not_available"/>
 
         <TextView
diff --git a/res/layout/font_size_preview.xml b/res/layout/font_size_preview.xml
index 2b1773b..f916ac4 100644
--- a/res/layout/font_size_preview.xml
+++ b/res/layout/font_size_preview.xml
@@ -26,6 +26,7 @@
         android:layout_height="wrap_content">
 
         <LinearLayout
+            android:id="@+id/font_size_preview_text_group"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:paddingTop="16dp"
diff --git a/res/layout/suw_font_size_fragment.xml b/res/layout/suw_font_size_fragment.xml
index 0e03a69..898b9eb 100644
--- a/res/layout/suw_font_size_fragment.xml
+++ b/res/layout/suw_font_size_fragment.xml
@@ -75,12 +75,6 @@
                     android:contentDescription="@string/font_size_make_larger_desc"
                     style="@style/screen_size_imageview_style"/>
             </LinearLayout>
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/font_size_summary"
-                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
         </LinearLayout>
     </LinearLayout>
 </androidx.core.widget.NestedScrollView>
diff --git a/res/layout/suw_screen_zoom_fragment.xml b/res/layout/suw_screen_zoom_fragment.xml
index 0747381..369ff14 100644
--- a/res/layout/suw_screen_zoom_fragment.xml
+++ b/res/layout/suw_screen_zoom_fragment.xml
@@ -74,12 +74,6 @@
                     android:contentDescription="@string/screen_zoom_make_larger_desc"
                     style="@style/screen_size_imageview_style"/>
             </LinearLayout>
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/screen_zoom_summary"
-                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
         </LinearLayout>
     </LinearLayout>
 </androidx.core.widget.NestedScrollView>
diff --git a/res/raw/udfps_edu_lottie.json b/res/raw/udfps_edu_lottie.json
index c13a02f..e012380 100644
--- a/res/raw/udfps_edu_lottie.json
+++ b/res/raw/udfps_edu_lottie.json
@@ -1,12485 +1 @@
-{
-  "v": "5.7.13",
-  "fr": 60,
-  "ip": 0,
-  "op": 541,
-  "w": 300,
-  "h": 289,
-  "nm": "enrollment_edu_02",
-  "ddd": 0,
-  "assets": [],
-  "layers": [
-    {
-      "ddd": 0,
-      "ind": 1,
-      "ty": 4,
-      "nm": "fingerprint motion 8",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 429,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 440,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 100,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 418,
-      "op": 630,
-      "st": 232,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 2,
-      "ty": 4,
-      "nm": "fingerprint motion 7",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0.667
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 380,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 394,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 369,
-      "op": 418,
-      "st": 232,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 3,
-      "ty": 4,
-      "nm": "fingerprint motion 6",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 335,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 348,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 100,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 324,
-      "op": 369,
-      "st": 131,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 4,
-      "ty": 4,
-      "nm": "fingerprint motion 5",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0.667
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 285,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 299,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 278,
-      "op": 324,
-      "st": 131,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 5,
-      "ty": 4,
-      "nm": "fingerprint motion 4",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 232,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 245,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 100,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 218,
-      "op": 278,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 6,
-      "ty": 4,
-      "nm": "fingerprint motion 3",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0.667
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 185,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 199,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 160,
-      "op": 218,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 7,
-      "ty": 4,
-      "nm": "fingerprint motion 2",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 138,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 149,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 100,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 0,
-      "op": 160,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 8,
-      "ty": 4,
-      "nm": "fingerprint motion",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.541000007181,
-                  0.705999995213,
-                  0.972999961703,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0.667
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.333
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 92,
-                "s": [
-                  100
-                ]
-              },
-              {
-                "t": 106,
-                "s": [
-                  0
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 0,
-      "op": 160,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 9,
-      "ty": 4,
-      "nm": "fingerprint static",
-      "parent": 10,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            -10.467,
-            814.892,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            22.5,
-            28.676,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            353.53,
-            353.53,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      3.564,
-                      0
-                    ],
-                    [
-                      2.241,
-                      1.694
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -2.329,
-                      2.012
-                    ],
-                    [
-                      -3.23,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      8.7,
-                      -1.624
-                    ],
-                    [
-                      -0.335,
-                      1.624
-                    ],
-                    [
-                      -8.7,
-                      -1.076
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.290196078431,
-                  0.313725490196,
-                  0.352941176471,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.837,
-                  48.229
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-                    ],
-                    [
-                      -7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ]
-                  ],
-                  "o": [
-                    [
-                      -0.988,
-                      -2.577
-                    ],
-                    [
-                      0,
-                      -6.83
-                    ],
-                    [
-                      7.553,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -12.247,
-                      8.824
-                    ],
-                    [
-                      -13.235,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -8.824
-                    ],
-                    [
-                      13.235,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.290196078431,
-                  0.313725490196,
-                  0.352941176471,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  30.441
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 2",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 2,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.647,
-                      0
-                    ],
-                    [
-                      0.388,
-                      2.294
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      2.117,
-                      0
-                    ],
-                    [
-                      -5.241,
-                      -1.482
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      2.629
-                    ],
-                    [
-                      -2.33,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -0.353,
-                      -2.1
-                    ],
-                    [
-                      -7.624,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      10.95,
-                      -1.756
-                    ],
-                    [
-                      10.95,
-                      -1.244
-                    ],
-                    [
-                      6.168,
-                      3.538
-                    ],
-                    [
-                      1.456,
-                      -0.45
-                    ],
-                    [
-                      0.962,
-                      -3.415
-                    ],
-                    [
-                      -3.326,
-                      -7.05
-                    ],
-                    [
-                      -2.568,
-                      7.05
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.290196078431,
-                  0.313725490196,
-                  0.352941176471,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  24.786,
-                  35.727
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 3",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 3,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.618,
-                      0
-                    ],
-                    [
-                      -2.665,
-                      -4.165
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.665,
-                      -4.165
-                    ],
-                    [
-                      6.618,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -15,
-                      3.529
-                    ],
-                    [
-                      0,
-                      -3.529
-                    ],
-                    [
-                      15,
-                      3.529
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.290196078431,
-                  0.313725490196,
-                  0.352941176471,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  18.088
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 4",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 4,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -3.53,
-                      0
-                    ],
-                    [
-                      -2.859,
-                      -1.429
-                    ]
-                  ],
-                  "o": [
-                    [
-                      2.859,
-                      -1.429
-                    ],
-                    [
-                      3.529,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      -9.706,
-                      1.12
-                    ],
-                    [
-                      0,
-                      -1.12
-                    ],
-                    [
-                      9.706,
-                      1.12
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.290196078431,
-                  0.313725490196,
-                  0.352941176471,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 3,
-                "ix": 5
-              },
-              "lc": 2,
-              "lj": 1,
-              "ml": 10,
-              "bm": 0,
-              "nm": "Stroke 1",
-              "mn": "ADBE Vector Graphic - Stroke",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  22.5,
-                  8.621
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 7
-              },
-              "sk": {
-                "a": 0,
-                "k": 0,
-                "ix": 4
-              },
-              "sa": {
-                "a": 0,
-                "k": 0,
-                "ix": 5
-              },
-              "nm": "Transform"
-            }
-          ],
-          "nm": "Group 5",
-          "np": 2,
-          "cix": 2,
-          "bm": 0,
-          "ix": 5,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 100,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 6,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 0,
-      "op": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 10,
-      "ty": 4,
-      "nm": "background",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.14,
-            205.871,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            -11.477,
-            810.793,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 1,
-          "k": [
-            {
-              "i": {
-                "x": [
-                  0.511,
-                  0.511,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 92,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.833,
-                  0.833,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 102,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.369,
-                  0.369,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.292,
-                  0.292,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 138,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.667,
-                  0.667,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.167,
-                  0.167,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 148,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.511,
-                  0.511,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 185,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.833,
-                  0.833,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 195,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.369,
-                  0.369,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.292,
-                  0.292,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 232,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.667,
-                  0.667,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.167,
-                  0.167,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 242,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.511,
-                  0.511,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 285,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.833,
-                  0.833,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 295,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.369,
-                  0.369,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.292,
-                  0.292,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 335,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.667,
-                  0.667,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.167,
-                  0.167,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 345,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.511,
-                  0.511,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 380,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.833,
-                  0.833,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.333,
-                  0.333,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 390,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.369,
-                  0.369,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.292,
-                  0.292,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 429,
-              "s": [
-                16.92,
-                16.92,
-                100
-              ]
-            },
-            {
-              "t": 439,
-              "s": [
-                17.82,
-                17.82,
-                100
-              ]
-            }
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  258.387,
-                  258.387
-                ],
-                "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": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 92,
-                    "s": [
-                      0.247058838489,
-                      0.305882352941,
-                      0.396078461292,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 98,
-                    "s": [
-                      0.105882360421,
-                      0.152941176471,
-                      0.223529426724,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 138,
-                    "s": [
-                      0.105882360421,
-                      0.152941176471,
-                      0.223529426724,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 143,
-                    "s": [
-                      0.247058838489,
-                      0.305882352941,
-                      0.396078461292,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 185,
-                    "s": [
-                      0.247058838489,
-                      0.305882352941,
-                      0.396078461292,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 190,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 232,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 237,
-                    "s": [
-                      0.258823543787,
-                      0.305882364511,
-                      0.388235300779,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 285,
-                    "s": [
-                      0.258823543787,
-                      0.305882364511,
-                      0.388235300779,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 290,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 335,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 340,
-                    "s": [
-                      0.258823543787,
-                      0.305882364511,
-                      0.388235300779,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 380,
-                    "s": [
-                      0.258823543787,
-                      0.305882364511,
-                      0.388235300779,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 385,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 429,
-                    "s": [
-                      0.117647059262,
-                      0.152941182256,
-                      0.219607844949,
-                      1
-                    ]
-                  },
-                  {
-                    "t": 434,
-                    "s": [
-                      0.258823543787,
-                      0.305882364511,
-                      0.388235300779,
-                      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": [
-                  -8.807,
-                  813.193
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 11,
-      "ty": 4,
-      "nm": "Phone/Phone_Illustration Outlines 2",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.5,
-            139.97,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            64,
-            118.5,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            103.629,
-            103.629,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "ind": 0,
-              "ty": "sh",
-              "ix": 1,
-              "ks": {
-                "a": 0,
-                "k": {
-                  "i": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      4.901,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      4.902
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -4.902,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -4.902
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      4.902
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -4.902,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -4.902
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      4.901,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      58.897,
-                      106.681
-                    ],
-                    [
-                      50.008,
-                      115.572
-                    ],
-                    [
-                      -52.229,
-                      115.572
-                    ],
-                    [
-                      -61.118,
-                      106.681
-                    ],
-                    [
-                      -61.118,
-                      -106.68
-                    ],
-                    [
-                      -52.229,
-                      -115.571
-                    ],
-                    [
-                      50.008,
-                      -115.571
-                    ],
-                    [
-                      58.897,
-                      -106.68
-                    ]
-                  ],
-                  "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,
-                      1.227
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      1.227,
-                      0.001
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      6.127,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.128
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.127,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      6.128
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      1.228
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      1.227,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -1.228
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -6.128
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      -6.127,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      6.128
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      6.127,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      1.227,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      -1.227
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      1.227,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      63.341,
-                      -48.896
-                    ],
-                    [
-                      63.341,
-                      -57.786
-                    ],
-                    [
-                      61.12,
-                      -60.008
-                    ],
-                    [
-                      61.12,
-                      -106.68
-                    ],
-                    [
-                      50.008,
-                      -117.795
-                    ],
-                    [
-                      -52.229,
-                      -117.795
-                    ],
-                    [
-                      -63.341,
-                      -106.68
-                    ],
-                    [
-                      -63.341,
-                      106.681
-                    ],
-                    [
-                      -52.229,
-                      117.795
-                    ],
-                    [
-                      50.008,
-                      117.795
-                    ],
-                    [
-                      61.12,
-                      106.681
-                    ],
-                    [
-                      61.12,
-                      -2.223
-                    ],
-                    [
-                      63.341,
-                      -4.445
-                    ],
-                    [
-                      63.341,
-                      -26.671
-                    ],
-                    [
-                      61.12,
-                      -28.893
-                    ],
-                    [
-                      61.12,
-                      -46.674
-                    ]
-                  ],
-                  "c": true
-                },
-                "ix": 2
-              },
-              "nm": "Path 2",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "mm",
-              "mm": 1,
-              "nm": "Merge Paths 1",
-              "mn": "ADBE Vector Filter - Merge",
-              "hd": false
-            },
-            {
-              "ty": "fl",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.501999978458,
-                  0.525,
-                  0.545000023935,
-                  1
-                ],
-                "ix": 4
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 60,
-                    "s": [
-                      100
-                    ]
-                  },
-                  {
-                    "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": 489,
-                    "s": [
-                      0
-                    ]
-                  },
-                  {
-                    "t": 499,
-                    "s": [
-                      100
-                    ]
-                  }
-                ],
-                "ix": 5
-              },
-              "r": 1,
-              "bm": 0,
-              "nm": "Fill 1",
-              "mn": "ADBE Vector Graphic - Fill",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  63.591,
-                  118.045
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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": 4,
-          "cix": 2,
-          "bm": 0,
-          "ix": 1,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        }
-      ],
-      "ip": 0,
-      "op": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 13,
-      "ty": 4,
-      "nm": "checkmark 2",
-      "parent": 14,
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            338.091,
-            629.95,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            334.381,
-            630.336,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            104.745,
-            104.745,
-            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
-                    ]
-                  ],
-                  "o": [
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ],
-                    [
-                      0,
-                      0
-                    ]
-                  ],
-                  "v": [
-                    [
-                      283,
-                      629.5
-                    ],
-                    [
-                      322.5,
-                      661.5
-                    ],
-                    [
-                      382.5,
-                      591.5
-                    ]
-                  ],
-                  "c": false
-                },
-                "ix": 2
-              },
-              "nm": "Path 1",
-              "mn": "ADBE Vector Shape - Group",
-              "hd": false
-            },
-            {
-              "ty": "st",
-              "c": {
-                "a": 0,
-                "k": [
-                  0.400000029919,
-                  0.61568627451,
-                  0.964705942191,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 487,
-                    "s": [
-                      100
-                    ]
-                  },
-                  {
-                    "t": 490,
-                    "s": [
-                      0
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 14,
-                "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": "Shape 1",
-          "np": 3,
-          "cix": 2,
-          "bm": 0,
-          "ix": 1,
-          "mn": "ADBE Vector Group",
-          "hd": false
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.645
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 433,
-                "s": [
-                  0
-                ]
-              },
-              {
-                "t": 447,
-                "s": [
-                  100
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 0,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": 429,
-      "op": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 14,
-      "ty": 4,
-      "nm": "checkmark",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            200.737,
-            254.567,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            338.647,
-            629.648,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 1,
-          "k": [
-            {
-              "i": {
-                "x": [
-                  0.549,
-                  0.549,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.04,
-                  0.04,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 429,
-              "s": [
-                7.2,
-                7.2,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.323,
-                  0.323,
-                  0.667
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.271,
-                  0.271,
-                  0.333
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 437,
-              "s": [
-                19.525,
-                19.525,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.833,
-                  0.833,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  0.167,
-                  0.167,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 454,
-              "s": [
-                17.185,
-                17.185,
-                100
-              ]
-            },
-            {
-              "i": {
-                "x": [
-                  0.913,
-                  0.913,
-                  0.833
-                ],
-                "y": [
-                  1,
-                  1,
-                  1
-                ]
-              },
-              "o": {
-                "x": [
-                  1,
-                  1,
-                  0.167
-                ],
-                "y": [
-                  0,
-                  0,
-                  0
-                ]
-              },
-              "t": 480,
-              "s": [
-                17.185,
-                17.185,
-                100
-              ]
-            },
-            {
-              "t": 490,
-              "s": [
-                7.2,
-                7.2,
-                100
-              ]
-            }
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  177.191,
-                  177.191
-                ],
-                "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.400000029919,
-                  0.61568627451,
-                  0.964705942191,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 482,
-                    "s": [
-                      100
-                    ]
-                  },
-                  {
-                    "t": 490,
-                    "s": [
-                      0
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 14,
-                "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.125490196078,
-                  0.129411764706,
-                  0.141176470588,
-                  1
-                ],
-                "ix": 4
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 482,
-                    "s": [
-                      100
-                    ]
-                  },
-                  {
-                    "t": 490,
-                    "s": [
-                      0
-                    ]
-                  }
-                ],
-                "ix": 5
-              },
-              "r": 1,
-              "bm": 0,
-              "nm": "Fill 1",
-              "mn": "ADBE Vector Graphic - Fill",
-              "hd": false
-            },
-            {
-              "ty": "tr",
-              "p": {
-                "a": 0,
-                "k": [
-                  338.104,
-                  629.943
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100,
-                  100
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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": 429,
-      "op": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 15,
-      "ty": 4,
-      "nm": "Shape Layer 20",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 270,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.541176470588,
-                  0.705882352941,
-                  0.972549079446,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 480,
-                    "s": [
-                      100
-                    ]
-                  },
-                  {
-                    "t": 486,
-                    "s": [
-                      0
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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": 477,
-      "op": 630,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 16,
-      "ty": 4,
-      "nm": "Shape Layer 19",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 270,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.541176470588,
-                  0.705882352941,
-                  0.972549079446,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "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": 380,
-                "s": [
-                  0
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 429,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "t": 440,
-                "s": [
-                  26
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 17,
-      "ty": 4,
-      "nm": "Shape Layer 18",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 270,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.18431372549,
-                  0.223529426724,
-                  0.282352941176,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 69,
-                    "s": [
-                      0
-                    ]
-                  },
-                  {
-                    "t": 79,
-                    "s": [
-                      100
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 22.5,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 18,
-      "ty": 4,
-      "nm": "Shape Layer 17",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 180,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.541176470588,
-                  0.705882352941,
-                  0.972549079446,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 1,
-            "k": [
-              {
-                "i": {
-                  "x": [
-                    0.21
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.564
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 285,
-                "s": [
-                  0
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 335,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 429,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "t": 440,
-                "s": [
-                  26
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 19,
-      "ty": 4,
-      "nm": "Shape Layer 16",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 180,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.18431372549,
-                  0.223529426724,
-                  0.282352941176,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 69,
-                    "s": [
-                      0
-                    ]
-                  },
-                  {
-                    "t": 79,
-                    "s": [
-                      100
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 22.5,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 20,
-      "ty": 4,
-      "nm": "Shape Layer 15",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 90,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.541176470588,
-                  0.705882352941,
-                  0.972549079446,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "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": 185,
-                "s": [
-                  0
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 232,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 429,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "t": 440,
-                "s": [
-                  26
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 21,
-      "ty": 4,
-      "nm": "Shape Layer 14",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 90,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.18431372549,
-                  0.223529426724,
-                  0.282352941176,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 69,
-                    "s": [
-                      0
-                    ]
-                  },
-                  {
-                    "t": 79,
-                    "s": [
-                      100
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 22.5,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 22,
-      "ty": 4,
-      "nm": "Shape Layer 9",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.541176470588,
-                  0.705882352941,
-                  0.972549079446,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 0,
-                "k": 100,
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "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": 92,
-                "s": [
-                  0
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 138,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "i": {
-                  "x": [
-                    0.833
-                  ],
-                  "y": [
-                    1
-                  ]
-                },
-                "o": {
-                  "x": [
-                    0.167
-                  ],
-                  "y": [
-                    0
-                  ]
-                },
-                "t": 429,
-                "s": [
-                  22.5
-                ]
-              },
-              {
-                "t": 440,
-                "s": [
-                  26
-                ]
-              }
-            ],
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    },
-    {
-      "ddd": 0,
-      "ind": 23,
-      "ty": 4,
-      "nm": "Shape Layer 6",
-      "sr": 1,
-      "ks": {
-        "o": {
-          "a": 0,
-          "k": 100,
-          "ix": 11
-        },
-        "r": {
-          "a": 0,
-          "k": 0,
-          "ix": 10
-        },
-        "p": {
-          "a": 0,
-          "k": [
-            151.32,
-            206.475,
-            0
-          ],
-          "ix": 2,
-          "l": 2
-        },
-        "a": {
-          "a": 0,
-          "k": [
-            37.523,
-            788.471,
-            0
-          ],
-          "ix": 1,
-          "l": 2
-        },
-        "s": {
-          "a": 0,
-          "k": [
-            17.09,
-            17.09,
-            100
-          ],
-          "ix": 6,
-          "l": 2
-        }
-      },
-      "ao": 0,
-      "shapes": [
-        {
-          "ty": "gr",
-          "it": [
-            {
-              "d": 1,
-              "ty": "el",
-              "s": {
-                "a": 0,
-                "k": [
-                  793.047,
-                  793.047
-                ],
-                "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.18431372549,
-                  0.223529426724,
-                  0.282352941176,
-                  1
-                ],
-                "ix": 3
-              },
-              "o": {
-                "a": 1,
-                "k": [
-                  {
-                    "i": {
-                      "x": [
-                        0.833
-                      ],
-                      "y": [
-                        0.833
-                      ]
-                    },
-                    "o": {
-                      "x": [
-                        0.167
-                      ],
-                      "y": [
-                        0.167
-                      ]
-                    },
-                    "t": 69,
-                    "s": [
-                      0
-                    ]
-                  },
-                  {
-                    "t": 79,
-                    "s": [
-                      100
-                    ]
-                  }
-                ],
-                "ix": 4
-              },
-              "w": {
-                "a": 0,
-                "k": 34,
-                "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": [
-                  37.523,
-                  787.523
-                ],
-                "ix": 2
-              },
-              "a": {
-                "a": 0,
-                "k": [
-                  0,
-                  0
-                ],
-                "ix": 1
-              },
-              "s": {
-                "a": 0,
-                "k": [
-                  100.278,
-                  100.278
-                ],
-                "ix": 3
-              },
-              "r": {
-                "a": 0,
-                "k": 0,
-                "ix": 6
-              },
-              "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
-        },
-        {
-          "ty": "tm",
-          "s": {
-            "a": 0,
-            "k": 0,
-            "ix": 1
-          },
-          "e": {
-            "a": 0,
-            "k": 22.5,
-            "ix": 2
-          },
-          "o": {
-            "a": 0,
-            "k": 365,
-            "ix": 3
-          },
-          "m": 1,
-          "ix": 2,
-          "nm": "Trim Paths 1",
-          "mn": "ADBE Vector Filter - Trim",
-          "hd": false
-        }
-      ],
-      "ip": -7,
-      "op": 477,
-      "st": 30,
-      "bm": 0
-    }
-  ],
-  "markers": []
-}
\ No newline at end of file
+{"v":"5.7.6","fr":60,"ip":0,"op":601,"w":1650,"h":2900,"nm":"UDFPS_EDU_LOTTIE_V02","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"PHONE_OUTLINE 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":571,"s":[0]},{"t":593.5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[837,1430,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[929.1,929.1,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.243,0],[0,0],[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244]],"o":[[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244],[0,0],[5.243,0],[0,0]],"v":[[63.454,114.112],[53.945,123.622],[-55.413,123.622],[-64.922,114.112],[-64.922,-114.112],[-55.413,-123.622],[53.945,-123.622],[63.454,-114.112]],"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,1.313],[0,0],[1.313,0],[0,0],[6.554,0],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[0,1.313],[0,0],[1.313,0],[0,0]],"o":[[0,0],[0,-1.313],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[6.554,0],[0,0],[1.313,0],[0,0],[0,-1.313],[0,0],[1.313,0]],"v":[[68.209,-52.302],[68.209,-61.811],[65.832,-64.188],[65.832,-114.112],[53.945,-126],[-55.413,-126],[-67.3,-114.112],[-67.3,114.112],[-55.413,126],[53.945,126],[65.832,114.112],[65.832,-2.378],[68.209,-4.755],[68.209,-28.528],[65.832,-30.906],[65.832,-49.924]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.368627458811,0.368627458811,0.368627458811,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":467.5,"op":2942.5,"st":542.5,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.512,0.901,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],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.824,-0.768],[-4.154,11.903],[16.824,-9.075],[13.995,-11.903],[-4.154,6.247],[-13.996,-3.596]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.61568627451,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":[200,200],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Checkmark","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,13.798],[13.798,0],[0,-13.798],[-13.798,0]],"o":[[0,-13.798],[-13.798,0],[0,13.798],[13.798,0]],"v":[[25.345,-0.429],[0.322,-25.454],[-24.701,-0.429],[0.322,24.595]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.399993896484,0.615661621094,0.964691162109,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"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,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[200,200],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":328,"op":2428,"st":328,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":472,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":478,"s":[100]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":548,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1348.087,2521.152,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.667],"y":[1.015,1.015,1]},"o":{"x":[0.363,0.363,0.333],"y":[0.038,0.038,0]},"t":473,"s":[0,0,100]},{"i":{"x":[0.474,0.474,0.667],"y":[1,1,1]},"o":{"x":[0.651,0.651,0.333],"y":[0.331,0.331,0]},"t":493,"s":[243.6,243.6,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":513,"s":[232,232,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":545,"s":[232,232,100]},{"t":555,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,12.703],[12.703,0],[0,-12.703],[-12.703,0]],"o":[[0,-12.703],[-12.703,0],[0,12.703],[12.703,0]],"v":[[23.037,0],[0,-23.038],[-23.037,0],[0,23.038]],"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":[200,200],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":328,"op":2428,"st":328,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"MAIN_MOVEMENT","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.954},"o":{"x":0.64,"y":0.046},"t":143.928,"s":[837,2098,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.07,"y":0.07},"o":{"x":0.64,"y":0.64},"t":151.455,"s":[879,2057,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.07,"y":0.99},"o":{"x":0.64,"y":0.01},"t":219.176,"s":[879,2057,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.07,"y":0.07},"o":{"x":0.64,"y":0.64},"t":226.697,"s":[856,2015,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.07,"y":0.99},"o":{"x":0.64,"y":0},"t":295.674,"s":[856,2015,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.07,"y":0.07},"o":{"x":0.64,"y":0.64},"t":303.193,"s":[808,2019,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.64,"y":0},"t":507.961,"s":[808,2019,0],"to":[0,0,0],"ti":[0,0,0]},{"t":521.345703125,"s":[837,2098,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.07,0.07,0.07],"y":[0.985,0.985,1]},"o":{"x":[0.64,0.64,0.64],"y":[0.015,0.015,0]},"t":90,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":100.035,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130.133,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1.025]},"o":{"x":[0.439,0.439,0.439],"y":[0,0,0]},"t":135,"s":[105,105,100]},{"i":{"x":[0.07,0.07,0.07],"y":[0.701,0.701,1]},"o":{"x":[0.64,0.64,0.64],"y":[0.299,0.299,0]},"t":145,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":152.5,"s":[105,105,100]},{"i":{"x":[0.6,0.6,0.6],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,-0.833]},"t":157.5,"s":[105,105,100]},{"i":{"x":[0.07,0.07,0.07],"y":[0.97,0.97,1]},"o":{"x":[0.64,0.64,0.64],"y":[0.03,0.03,0]},"t":165.246,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":175.281,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":205.377,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.175]},"o":{"x":[0.341,0.341,0.341],"y":[0,0,0]},"t":210.391,"s":[100,100,100]},{"i":{"x":[0.07,0.07,0.07],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":220,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":227.5,"s":[105,105,100]},{"i":{"x":[0.621,0.621,0.621],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0.102]},"t":232.5,"s":[105,105,100]},{"i":{"x":[0.07,0.07,0.07],"y":[0.984,0.984,1]},"o":{"x":[0.64,0.64,0.64],"y":[0.016,0.016,0]},"t":240,"s":[105,105,100]},{"i":{"x":[0.07,0.07,0.07],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":250.527,"s":[95,95,100]},{"i":{"x":[0.316,0.316,0.316],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":285,"s":[95,95,100]},{"i":{"x":[0.577,0.577,0.577],"y":[1,1,1]},"o":{"x":[0.253,0.253,0.253],"y":[0,0,0]},"t":295,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,0.925]},"o":{"x":[0.299,0.299,0.299],"y":[0,0,0]},"t":302.5,"s":[105,105,100]},{"i":{"x":[0.627,0.627,0.627],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0.262]},"t":307.5,"s":[105,105,100]},{"i":{"x":[0.07,0.07,0.07],"y":[0.984,0.984,1]},"o":{"x":[0.64,0.64,0.64],"y":[0.016,0.016,0]},"t":365,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.64,0.64,0.64],"y":[0,0,0]},"t":375.771,"s":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":508.369,"s":[95,95,100]},{"t":515,"s":[105,105,100]}],"ix":6,"l":2}},"ao":0,"ip":-70,"op":2517.5,"st":117.5,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey700","cl":"grey700","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[3.5,-3,0],"ix":2,"l":2},"a":{"a":0,"k":[28,34,0],"ix":1,"l":2},"s":{"a":0,"k":[527,527,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.703,0],[2.328,1.76]],"o":[[-2.42,2.09],[-3.355,0],[0,0]],"v":[[9.038,-1.687],[-0.348,1.687],[-9.038,-1.118]],"c":false},"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],[-7.847,0],[0,-7.095]],"o":[[-1.027,-2.676],[0,-7.095],[7.847,0],[0,0]],"v":[[-13.072,-9.314],[-14.099,-14.814],[-0.349,-27.648],[13.401,-14.814]],"c":false},"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],[2.75,0],[0.403,2.384],[0,0],[2.2,0],[-5.445,-1.54]],"o":[[0,0],[0,2.733],[-2.42,0],[0,0],[-0.367,-2.181],[-7.92,0],[0,0]],"v":[[13.401,-14.814],[13.401,-14.283],[8.433,-9.314],[3.538,-13.458],[3.025,-16.538],[-1.43,-20.314],[-0.642,-5.665]],"c":false},"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],[-6.875,0],[-2.769,-4.327]],"o":[[2.768,-4.327],[6.876,0],[0,0]],"v":[[-15.933,-27.646],[-0.35,-34.979],[15.234,-27.646]],"c":false},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-3.666,0],[-2.97,-1.485]],"o":[[2.97,-1.485],[3.667,0],[0,0]],"v":[[-10.433,-39.985],[-0.35,-42.313],[9.734,-39.985]],"c":false},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.372549027205,0.388235300779,0.407843142748,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[27.933,54.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":90,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.64],"y":[0]},"t":110.035,"s":[0]},{"t":150.197,"s":[0],"h":1},{"t":152.705,"s":[100],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":165.246,"s":[100]},{"i":{"x":[0.833],"y":[-14.687]},"o":{"x":[0.64],"y":[0]},"t":185.281,"s":[0]},{"t":225.441,"s":[0],"h":1},{"t":227.949,"s":[100],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240.494,"s":[100]},{"i":{"x":[0.833],"y":[-14.701]},"o":{"x":[0.64],"y":[0]},"t":260,"s":[0]},{"t":300.689,"s":[0],"h":1},{"t":303.193,"s":[100],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":365.74,"s":[100]},{"i":{"x":[0.833],"y":[-15.359]},"o":{"x":[0.64],"y":[0]},"t":385,"s":[0]},{"t":518.434,"s":[0],"h":1},{"t":520.943359375,"s":[100],"h":1}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.941]},"o":{"x":[0.64],"y":[0.059]},"t":130.133,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.64],"y":[0]},"t":140.146,"s":[0]},{"t":150.197,"s":[0],"h":1},{"t":152.705,"s":[100],"h":1},{"i":{"x":[0],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":205.377,"s":[100]},{"i":{"x":[0.833],"y":[-12.439]},"o":{"x":[0.64],"y":[0]},"t":215,"s":[0]},{"t":225.441,"s":[0],"h":1},{"t":227.949,"s":[100],"h":1},{"i":{"x":[0.07],"y":[0.941]},"o":{"x":[0.64],"y":[0.059]},"t":280.623,"s":[100]},{"i":{"x":[0.833],"y":[-12.342]},"o":{"x":[0.64],"y":[0]},"t":290.641,"s":[0]},{"t":300.689,"s":[0],"h":1},{"t":303.193,"s":[100],"h":1},{"i":{"x":[0.07],"y":[0.97]},"o":{"x":[0.64],"y":[0.03]},"t":508.369,"s":[100]},{"i":{"x":[0.833],"y":[-10.133]},"o":{"x":[0.64],"y":[0]},"t":513.385,"s":[0]},{"t":518.434,"s":[0],"h":1},{"t":520.943359375,"s":[100],"h":1}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-20,"op":4855,"st":55,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[3.5,-3,0],"ix":2,"l":2},"a":{"a":0,"k":[28,34,0],"ix":1,"l":2},"s":{"a":0,"k":[527,527,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.703,0],[2.328,1.76]],"o":[[-2.42,2.09],[-3.355,0],[0,0]],"v":[[9.038,-1.687],[-0.348,1.687],[-9.038,-1.118]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[27.933,54.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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],[-7.847,0],[0,-7.095]],"o":[[-1.027,-2.676],[0,-7.095],[7.847,0],[0,0]],"v":[[-12.723,9.167],[-13.75,3.667],[0,-9.167],[13.75,3.667]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[27.584,35.833],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.75,0],[0.403,2.384],[0,0],[2.2,0],[-5.445,-1.54]],"o":[[0,0],[0,2.733],[-2.42,0],[0,0],[-0.367,-2.181],[-7.92,0],[0,0]],"v":[[11.376,-1.824],[11.376,-1.293],[6.408,3.676],[1.512,-0.468],[0.999,-3.548],[-3.456,-7.324],[-2.667,7.324]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.958,41.324],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.875,0],[-2.769,-4.327]],"o":[[2.768,-4.327],[6.876,0],[0,0]],"v":[[-15.583,3.667],[-0.001,-3.667],[15.583,3.667]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[27.583,23.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.666,0],[-2.97,-1.485]],"o":[[2.97,-1.485],[3.667,0],[0,0]],"v":[[-10.083,1.164],[-0.001,-1.164],[10.083,1.164]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[27.583,13.164],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":-20,"op":4855,"st":55,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".blue400","cl":"blue400","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":88,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":113,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":128,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":153,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":158,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":183,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":198,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":223,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":230,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":255,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":280,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":295,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":368,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":383,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":508,"s":[0]},{"t":518,"s":[40]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2.91,-13.59,0],"ix":2,"l":2},"a":{"a":0,"k":[-13.09,1270.41,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":[440,440],"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.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":[-13.09,1270.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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":-70,"op":2585,"st":117.5,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey700","cl":"grey700","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":113,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":128,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":153,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":183,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":198,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":223,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":230,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":255,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":280,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":295,"s":[0]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":368,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":383,"s":[40]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":508,"s":[40]},{"t":518,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2.91,-13.59,0],"ix":2,"l":2},"a":{"a":0,"k":[-13.09,1270.41,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":[440,440],"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.372549027205,0.388235300779,0.407843142748,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":[-13.09,1270.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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":-70,"op":2585,"st":117.5,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":12.5,"s":[100]},{"t":47.5,"s":[1]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[837,1430,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[929.094,929.094,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.243,0],[0,0],[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244]],"o":[[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244],[0,0],[5.243,0],[0,0]],"v":[[63.454,114.112],[53.945,123.622],[-55.413,123.622],[-64.922,114.112],[-64.922,-114.112],[-55.413,-123.622],[53.945,-123.622],[63.454,-114.112]],"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,1.313],[0,0],[1.313,0],[0,0],[6.554,0],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[0,1.313],[0,0],[1.313,0],[0,0]],"o":[[0,0],[0,-1.313],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[6.554,0],[0,0],[1.313,0],[0,0],[0,-1.313],[0,0],[1.313,0]],"v":[[68.209,-52.302],[68.209,-61.811],[65.832,-64.188],[65.832,-114.112],[53.945,-126],[-55.413,-126],[-67.3,-114.112],[-67.3,114.112],[-55.413,126],[53.945,126],[65.832,114.112],[65.832,-2.378],[68.209,-4.755],[68.209,-28.528],[65.832,-30.906],[65.832,-49.924]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,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":-20,"op":2455,"st":55,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":547.5,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":392.5,"s":[0]},{"t":618,"s":[630.722]}],"ix":10},"p":{"a":0,"k":[839.723,2083.641,0],"ix":2,"l":2},"a":{"a":0,"k":[-13.09,1270.41,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[1075,1075],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":92.535,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":141.172,"s":[25]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":168.826,"s":[25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":215,"s":[50]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":242.439,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":290.633,"s":[75]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":335.787,"s":[75]},{"t":508.98046875,"s":[100]}],"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":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":65,"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":[-13.09,1270.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-70,"op":2585,"st":117.5,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":37.5,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[40]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":550,"s":[40]},{"t":582.5,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[839.723,2083.641,0],"ix":2,"l":2},"a":{"a":0,"k":[-13.09,1270.41,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[1075,1075],"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.40000000596,0.615686297417,0.964705884457,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":65,"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":[-13.09,1270.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"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":-70,"op":2585,"st":117.5,"bm":0}],"markers":[{"tm":0,"cm":"0","dr":0},{"tm":292.5,"cm":"2","dr":0},{"tm":600,"cm":"3","dr":0}]}
\ No newline at end of file
diff --git a/res/values-sw600dp/config.xml b/res/values-sw600dp/config.xml
index 543dfee..f22d7ba 100644
--- a/res/values-sw600dp/config.xml
+++ b/res/values-sw600dp/config.xml
@@ -19,4 +19,6 @@
     <!-- Dashboard number of columns -->
     <integer name="dashboard_num_columns">2</integer>
 
+    <!-- Whether to support large screen -->
+    <bool name="config_supported_large_screen">true</bool>
 </resources>
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 45c28dd..b357758 100755
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -63,6 +63,9 @@
     <dimen name="confirm_credentials_side_margin">0dp</dimen>
     <dimen name="confirm_credentials_top_margin">64dp</dimen>
 
+    <!-- padding for font size preview in large screen -->
+    <dimen name="font_size_preview_padding_start">32dp</dimen>
+
     <!-- Padding for screen pinning -->
     <dimen name="screen_pinning_padding_start">40dp</dimen>
     <dimen name="screen_pinning_padding_end">40dp</dimen>
diff --git a/res/values/config.xml b/res/values/config.xml
index d83e10d..277176f 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -532,6 +532,9 @@
     <!-- Whether suw to support two panes -->
     <bool name="config_suw_supported_two_panes">false</bool>
 
+    <!-- Whether to support large screen -->
+    <bool name="config_supported_large_screen">false</bool>
+
     <!-- Display settings screen, Color mode options. Must be the same length and order as
          config_color_mode_options_values below. Only the values that also appear in
          frameworks/base/core/res/res/values/config.xml's config_availableColorModes are shown. -->
diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml
index e69664a..2841b69 100755
--- a/res/values/menu_keys.xml
+++ b/res/values/menu_keys.xml
@@ -26,6 +26,7 @@
     <string name="menu_key_display" translatable="false">top_level_display</string>
     <string name="menu_key_wallpaper" translatable="false">top_level_wallpaper</string>
     <string name="menu_key_accessibility" translatable="false">top_level_accessibility</string>
+    <string name="menu_key_safety_center" translatable="false">top_level_safety_center</string>
     <string name="menu_key_security" translatable="false">top_level_security</string>
     <string name="menu_key_privacy" translatable="false">top_level_privacy</string>
     <string name="menu_key_location" translatable="false">top_level_location</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 806f004..7681674 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -461,7 +461,7 @@
     <string name="next_label">Next</string>
 
     <!-- LocalePicker -->
-    <!-- Title for the locale picker activity -->
+    <!-- Title for the locale picker activity. [CHAR LIMIT=30]-->
     <string name="language_picker_title">Languages</string>
 
     <!-- Menu item in the locale menu. Will remove the selected locales. [CHAR LIMIT=30] -->
@@ -470,6 +470,29 @@
     <!-- "Button" that opens a language picker. The selected language gets added to the language list. [CHAR LIMIT=30] -->
     <string name="add_a_language">Add a language</string>
 
+    <!-- Title of preference for the locale picker activity. [CHAR LIMIT=30]-->
+    <string name="app_locale_preference_title">Language</string>
+
+    <!-- Title for the locale picker category. [CHAR LIMIT=50]-->
+    <string name="locale_picker_category_title">Preferred Language</string>
+
+    <!-- Title for the Apps' locale menu entry [CHAR LIMIT=50]-->
+    <string name="app_locales_picker_menu_title">App Languages</string>
+
+    <!-- Summary for the app's locale picker activity. [CHAR LIMIT=50]-->
+    <string name="app_locale_picker_summary">Set the language for each app</string>
+
+    <!-- Title for the App's locale picker activity. [CHAR LIMIT=50]-->
+    <string name="app_locale_picker_title">App Language</string>
+
+    <!-- Category for the suggested app's locales. [CHAR LIMIT=50]-->
+    <string name="suggested_app_locales_title">Suggested languages</string>
+
+    <!-- Category for the app's locale picker activity. [CHAR LIMIT=50]-->
+    <string name="all_supported_app_locales_title">All languages</string>
+
+    <!-- Description for the app without any supported languages. [CHAR LIMIT=NONE]-->
+    <string name="no_multiple_language_supported">The app is set to <xliff:g id="default_language" example="English (United States)">%1$s</xliff:g> by default and doesn\u2019t support multiple languages.</string>
     <!-- The title of the confirmation dialog shown when the user selects one / several languages and tries to remove them [CHAR LIMIT=60] -->
     <plurals name="dlg_remove_locales_title">
         <item quantity="one">Remove selected language?</item>
@@ -722,6 +745,12 @@
     <string name="security_status_title">Security status</string>
     <!-- Summary for Security settings, explaining a few important settings under it [CHAR LIMIT=NONE] -->
     <string name="security_dashboard_summary">Screen lock, Find My Device, app security</string>
+    <!-- TODO(b/208624929): Update to an UX approved title and char limit. -->
+    <!-- Main Settings screen setting title for the item that takes you to the safety center [CHAR LIMIT=60] -->
+    <string name="safety_center_title">Security &amp; privacy</string>
+    <!-- TODO(b/208624929): Update to an UX approved summary and char limit. -->
+    <!-- Main Settings screen setting summary for the item that takes you to the safety center [CHAR LIMIT=60] -->
+    <string name="safety_center_summary">Permissions, screen lock, app security</string>
 
     <!-- Face enrollment and settings --><skip />
     <!-- Note: Update FaceEnrollParentalConsent.CONSENT_STRING_RESOURCES when any _consent_ strings are added or removed. -->
@@ -871,11 +900,9 @@
     <!-- Dialog title shown when the user removes an enrollment [CHAR LIMIT=35] -->
     <string name="security_settings_face_settings_remove_dialog_title">Delete face model?</string>
     <!-- Dialog contents shown when the user removes an enrollment [CHAR LIMIT=NONE] -->
-    <string name="security_settings_face_settings_remove_dialog_details">Your face model will be permanently and securely deleted. After deletion, you will need your PIN, pattern, or password to unlock your phone or for authentication in apps.</string>
-    <!-- Dialog title shown when the user chooses to delete an existing enrolled face model. [CHAR LIMIT=35] -->
-    <string name="security_settings_face_settings_remove_model_dialog_title">Delete face model?</string>
-    <!-- Dialog contents shown when the user chooses to delete an existing enrolled face model. [CHAR LIMIT=NONE] -->
-    <string name="security_settings_face_settings_remove_model_dialog_details">Your face model will be permanently and securely deleted.\n\nAfter deletion, you will need your fingerprint, PIN, pattern, or password to unlock your phone or for authentication in apps.</string>
+    <string name="security_settings_face_settings_remove_dialog_details">Your face model will be permanently and securely deleted.\n\nAfter deletion, you will need your PIN, pattern, or password to unlock your phone or for authentication in apps.</string>
+    <!-- Dialog contents shown when the user removes an enrollment when configured as a convenience [CHAR LIMIT=NONE] -->
+    <string name="security_settings_face_settings_remove_dialog_details_convenience">Your face model will be permanently and securely deleted.\n\nAfter deletion, you will need your PIN, pattern, or password to unlock your phone.</string>
     <!-- Subtitle shown for contextual setting face enrollment [CHAR LIMIT=NONE] -->
     <string name="security_settings_face_settings_context_subtitle">Use Face Unlock to unlock your phone</string>
 
@@ -4386,25 +4413,6 @@
     <!-- Header on first screen of choose work profile pattern flow [CHAR LIMIT=40] -->
     <string name="lockpassword_choose_your_profile_pattern_header">Set a work pattern</string>
 
-    <!-- Header on first screen of choose device password flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_password_description" product="phone">For added security, set a password to unlock the phone</string>
-    <!-- Header on first screen of choose device PIN flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_pin_description" product="phone">For added security, set a PIN to unlock the phone</string>
-    <!-- Header on first screen of choose device pattern flow [CHAR LIMIT=NONE] -->
-    <string name="lockpattern_choose_pattern_description" product="phone">For added security, set a pattern to unlock the phone</string>
-    <!-- Header on first screen of choose device password flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_password_description" product="tablet">For added security, set a password to unlock the tablet</string>
-    <!-- Header on first screen of choose device PIN flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_pin_description" product="tablet">For added security, set a PIN to unlock the tablet</string>
-    <!-- Header on first screen of choose device pattern flow [CHAR LIMIT=NONE] -->
-    <string name="lockpattern_choose_pattern_description" product="tablet">For added security, set a pattern to unlock the tablet</string>
-    <!-- Header on first screen of choose device password flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_password_description" product="default">For added security, set a password to unlock the device</string>
-    <!-- Header on first screen of choose device PIN flow [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_choose_pin_description" product="default">For added security, set a PIN to unlock the device</string>
-    <!-- Header on first screen of choose device pattern flow [CHAR LIMIT=NONE] -->
-    <string name="lockpattern_choose_pattern_description" product="default">For added security, set a pattern to unlock the device</string>
-
     <!-- Header on first screen of choose password/PIN as backup for fingerprint flow. If this string cannot be translated in under 40 characters, please translate "Set fingerprint backup" [CHAR LIMIT=40] -->
     <string name="lockpassword_choose_your_password_header_for_fingerprint">To use fingerprint, set password</string>
     <!-- Header on first screen of choose pattern as backup for fingerprint flow. If this string cannot be translated in under 40 characters, please translate "Set fingerprint backup" [CHAR LIMIT=40] -->
@@ -5545,11 +5553,17 @@
     <!-- Description for the seekbar that adjust auto click time. [CHAR_LIMIT=NONE] -->
     <string name="accessibility_autoclick_seekbar_desc">Auto click time</string>
     <!-- Title for accessibility preference screen for configuring vibrations. -->
-    <string name="accessibility_vibration_settings_title">Vibration &amp; haptic strength</string>
-    <!-- Title for accessibility preference for configuring notification vibrations. -->
-    <string name="accessibility_notification_vibration_title">Notification vibration</string>
+    <string name="accessibility_vibration_settings_title">Vibration &amp; haptics</string>
+    <!-- Title for the category of preferences to configure device vibrations related to calls. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_call_vibration_category_title">Calls</string>
+    <!-- Title for the category of preferences to configure device vibrations related to notifications and alarms. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_notification_alarm_vibration_category_title">Notifications and alarms</string>
+    <!-- Title for the category of preferences to configure device vibrations triggered by user interaction with the device. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_interactive_haptics_category_title">Interactive haptics</string>
     <!-- Title for accessibility preference for configuring ring vibrations. [CHAR LIMIT=NONE] -->
     <string name="accessibility_ring_vibration_title">Ring vibration</string>
+    <!-- Title for accessibility preference for configuring notification vibrations. -->
+    <string name="accessibility_notification_vibration_title">Notification vibration</string>
     <!-- Title for accessibility preference for configuring touch feedback vibrations. -->
     <string name="accessibility_touch_vibration_title">Touch feedback</string>
     <!-- Used in the accessibility service settings to control turning on/off the service entirely [CHAR LIMIT=60] -->
@@ -8261,8 +8275,6 @@
     <string name="keywords_wifi_notify_open_networks">Wi\u2011Fi notification, wifi notification</string>
     <!-- Search keyword for "Wi-fi data usage" settings. [CHAR_LIMIT=NONE]-->
     <string name="keywords_wifi_data_usage">data usage</string>
-    <!-- Search keyword for "Vibrate on touch" settings. [CHAR_LIMIT=NONE]-->
-    <string name="keywords_vibrate_on_touch">Stop vibration, tap, keyboard</string>
     <!-- Search keyword for "Time format" settings. [CHAR_LIMIT=NONE]-->
     <string name="keywords_time_format">Use 24-hour format</string>
     <!-- Search keyword for "Files" settings under Settings > Storage. [CHAR_LIMIT=NONE]-->
@@ -8398,11 +8410,12 @@
 
     <!-- List of synonyms for touch vibration setting (where you get a haptic response for touching things on the screen), used to match in settings search [CHAR LIMIT=NONE] -->
     <string name="keywords_touch_vibration">haptics, vibrate, screen, sensitivity</string>
-
     <!-- List of synonyms for ring vibration setting (changes whether your phone vibrates when it rings), used to match in settings search [CHAR LIMIT=NONE] -->
     <string name="keywords_ring_vibration">haptics, vibrate, phone, call, sensitivity, ring</string>
     <!-- List of synonyms for notification vibration setting (changes whether your phone vibrates when it shows a notification), used to match in settings search [CHAR LIMIT=NONE] -->
     <string name="keywords_notification_vibration">haptics, vibrate, sensitivity</string>
+    <!-- List of synonyms for vibration and haptics setting, used to match in settings search [CHAR LIMIT=NONE] -->
+    <string name="keywords_vibration">haptics, vibrate, vibration</string>
     <!-- Battery Saver: Search terms for sticky battery saver preference [CHAR_LIMIT=NONE] -->
     <string name="keywords_battery_saver_sticky">battery saver, sticky, persist, power saver, battery</string>
     <!-- Battery Saver: Search terms for battery saver schedule preference. Feel free to add additional terms when translating if appropriate [CHAR_LIMIT=NONE] -->
@@ -8514,12 +8527,6 @@
     <!-- Sound: Other sounds: Title for the option enabling touch sounds. [CHAR LIMIT=30] -->
     <string name="touch_sounds_title">Touch sounds</string>
 
-    <!-- Sound: Other sounds: Title for the option enabling haptic feedback on touch. [CHAR LIMIT=30] -->
-    <string name="vibrate_on_touch_title">Touch vibration</string>
-
-    <!-- Sound: Other sounds: Preference summary to the option enabling haptic feedback on touch. -->
-    <string name="vibrate_on_touch_summary">Haptic feedback for tap, keyboard, and more</string>
-
     <!-- Sound: Other sounds: Title for the option enabling dock audio media. [CHAR LIMIT=50] -->
     <string name="dock_audio_media_title">Dock speaker plays</string>
 
@@ -13343,9 +13350,9 @@
     <string name="lockscreen_privacy_wallet_summary">Allow access to wallet from lock screen and quick settings</string>
 
     <!-- QR Code Scanner toggle name [CHAR LIMIT=60] -->
-    <string name="lockscreen_privacy_qr_code_scanner_setting_toggle">Show QR Code Scanner</string>
+    <string name="lockscreen_privacy_qr_code_scanner_setting_toggle">Show QR Scanner</string>
     <!-- QR Code Scanner summary [CHAR LIMIT=NONE] -->
-    <string name="lockscreen_privacy_qr_code_scanner_summary">Allow access to QR code scanner from lock screen</string>
+    <string name="lockscreen_privacy_qr_code_scanner_summary">Allow access to QR scanner from lock screen</string>
 
     <!-- Device controls toggle name [CHAR LIMIT=60] -->
     <string name="lockscreen_privacy_controls_setting_toggle">Show device controls</string>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index d73e157..aae158b 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -227,6 +227,10 @@
         <item name="android:statusBarColor">?attr/colorPrimaryDark</item>
     </style>
 
+    <style name="Theme.Settings.Home.DeepLink">
+        <item name="android:windowAnimationStyle">@null</item>
+    </style>
+
     <style name="Theme.Settings.ContextualCard" parent="Theme.Settings.Home">
         <item name="android:textAppearanceListItem">@style/TextAppearance.HomepageCardTitle</item>
     </style>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 61f527d..8113a9f 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -100,7 +100,8 @@
             android:icon="@drawable/ic_vibration"
             android:persistent="false"
             android:title="@string/accessibility_vibration_settings_title"
-            settings:controller="com.android.settings.accessibility.VibrationPreferenceController"/>
+            settings:controller="com.android.settings.accessibility.VibrationPreferenceController"
+            settings:keywords="@string/keywords_vibration"/>
 
     </PreferenceCategory>
 
diff --git a/res/xml/accessibility_vibration_settings.xml b/res/xml/accessibility_vibration_settings.xml
index 87c2988..ff10611 100644
--- a/res/xml/accessibility_vibration_settings.xml
+++ b/res/xml/accessibility_vibration_settings.xml
@@ -20,24 +20,49 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/accessibility_vibration_settings_title">
 
-    <Preference
-        android:fragment="com.android.settings.accessibility.RingVibrationPreferenceFragment"
-        android:key="ring_vibration_preference_screen"
-        android:title="@string/accessibility_ring_vibration_title"
-        settings:keywords="@string/keywords_ring_vibration"
-        app:controller="com.android.settings.accessibility.RingVibrationIntensityPreferenceController" />
+    <PreferenceCategory
+        android:key="accessibility_call_vibration_category"
+        android:title="@string/accessibility_call_vibration_category_title">
 
-    <Preference
-        android:fragment="com.android.settings.accessibility.NotificationVibrationPreferenceFragment"
-        android:key="notification_vibration_preference_screen"
-        android:title="@string/accessibility_notification_vibration_title"
-        settings:keywords="@string/keywords_notification_vibration"
-        app:controller="com.android.settings.accessibility.NotificationVibrationIntensityPreferenceController" />
+        <Preference
+            android:fragment="com.android.settings.accessibility.RingVibrationPreferenceFragment"
+            android:key="ring_vibration_preference_screen"
+            android:title="@string/accessibility_ring_vibration_title"
+            settings:keywords="@string/keywords_ring_vibration"
+            app:controller="com.android.settings.accessibility.RingVibrationIntensityPreferenceController" />
 
-    <Preference
-        android:fragment="com.android.settings.accessibility.TouchVibrationPreferenceFragment"
-        android:key="touch_vibration_preference_screen"
-        android:title="@string/accessibility_touch_vibration_title"
-        settings:keywords="@string/keywords_touch_vibration"
-        app:controller="com.android.settings.accessibility.HapticFeedbackIntensityPreferenceController" />
+        <Preference
+            android:fragment="com.android.settings.sound.VibrateForCallsPreferenceFragment"
+            android:key="vibrate_for_calls"
+            android:title="@string/vibrate_when_ringing_title"
+            settings:controller="com.android.settings.sound.VibrateForCallsPreferenceController"/>
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="accessibility_notification_alarm_vibration_category"
+        android:title="@string/accessibility_notification_alarm_vibration_category_title">
+
+        <Preference
+            android:fragment="com.android.settings.accessibility.NotificationVibrationPreferenceFragment"
+            android:key="notification_vibration_preference_screen"
+            android:title="@string/accessibility_notification_vibration_title"
+            settings:keywords="@string/keywords_notification_vibration"
+            app:controller="com.android.settings.accessibility.NotificationVibrationIntensityPreferenceController" />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="accessibility_interactive_haptics_category"
+        android:title="@string/accessibility_interactive_haptics_category_title">
+
+        <Preference
+            android:fragment="com.android.settings.accessibility.TouchVibrationPreferenceFragment"
+            android:key="touch_vibration_preference_screen"
+            android:title="@string/accessibility_touch_vibration_title"
+            settings:keywords="@string/keywords_touch_vibration"
+            app:controller="com.android.settings.accessibility.HapticFeedbackIntensityPreferenceController" />
+
+    </PreferenceCategory>
+
 </PreferenceScreen>
diff --git a/res/xml/app_info_settings.xml b/res/xml/app_info_settings.xml
index 1442960..562c7d1 100644
--- a/res/xml/app_info_settings.xml
+++ b/res/xml/app_info_settings.xml
@@ -89,6 +89,12 @@
         android:summary="@string/summary_placeholder" />
 
     <Preference
+        android:key="app_language_setting"
+        android:title="@string/app_locale_preference_title"
+        android:summary="@string/summary_placeholder"
+        settings:controller="com.android.settings.applications.appinfo.AppLocalePreferenceController" />
+
+    <Preference
         android:key="preferred_settings"
         android:title="@string/launch_by_default"
         android:summary="@string/summary_placeholder"
diff --git a/res/xml/app_locale_details.xml b/res/xml/app_locale_details.xml
new file mode 100644
index 0000000..8056cbf
--- /dev/null
+++ b/res/xml/app_locale_details.xml
@@ -0,0 +1,37 @@
+<?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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/app_locale_picker_title">
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="app_locale_description"
+        android:layout="@layout/app_locale_details_description"
+        android:selectable="false"
+        android:visibility="gone"
+        settings:allowDividerBelow="true"
+        settings:searchable="false"/>
+
+    <PreferenceCategory
+        android:key="category_key_suggested_languages"
+        android:title="@string/suggested_app_locales_title" />
+
+    <PreferenceCategory
+        android:key="category_key_all_languages"
+        android:title="@string/all_supported_app_locales_title" />
+
+</PreferenceScreen>
diff --git a/res/xml/language_and_input.xml b/res/xml/language_and_input.xml
index f33ef5c..f2b6d8a 100644
--- a/res/xml/language_and_input.xml
+++ b/res/xml/language_and_input.xml
@@ -19,12 +19,28 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/language_settings">
+    <PreferenceCategory
+        android:key="languages_category"
+        android:title="@string/locale_picker_category_title">
+        <Preference
+            android:key="phone_language"
+            android:title="@string/phone_language"
+            android:icon="@drawable/ic_translate_24dp"
+            android:fragment="com.android.settings.localepicker.LocaleListEditor" />
 
-    <Preference
-        android:key="phone_language"
-        android:title="@string/phone_language"
-        android:icon="@drawable/ic_translate_24dp"
-        android:fragment="com.android.settings.localepicker.LocaleListEditor" />
+        <Preference
+            android:key="apps_language"
+            android:title="@string/app_locales_picker_menu_title"
+            android:summary="@string/app_locale_picker_summary"
+            android:fragment="com.android.settings.applications.manageapplications.ManageApplications"
+            settings:controller="com.android.settings.applications.appinfo.ManageAppLocalePreferenceController">
+            <extra
+                android:name="classname"
+                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
+        </Preference>
+
+
+    </PreferenceCategory>
 
     <PreferenceCategory
         android:key="keyboards_category"
diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml
index 7d1ff09..673994a 100644
--- a/res/xml/mobile_network_settings.xml
+++ b/res/xml/mobile_network_settings.xml
@@ -223,7 +223,6 @@
             <Preference
                 android:key="choose_network_key"
                 android:title="@string/choose_network_title"
-                android:fragment="com.android.phone.NetworkSelectSetting"
                 settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
         </PreferenceCategory>
 
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 35082fd..9547318 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -52,7 +52,7 @@
             settings:controller="com.android.settings.deviceinfo.BrandedAccountPreferenceController"/>
 
         <!-- Phone number -->
-        <Preference
+        <com.android.settings.deviceinfo.PhoneNumberSummaryPreference
             android:key="phone_number"
             android:order="3"
             android:title="@string/status_number"
@@ -113,7 +113,7 @@
             settings:controller="com.android.settings.deviceinfo.HardwareInfoPreferenceController"/>
 
         <!-- IMEI -->
-        <Preference
+        <com.android.settings.deviceinfo.PhoneNumberSummaryPreference
             android:key="imei_info"
             android:order="32"
             android:title="@string/status_imei"
diff --git a/res/xml/other_sound_settings.xml b/res/xml/other_sound_settings.xml
index 7b3f362..d8396a4 100644
--- a/res/xml/other_sound_settings.xml
+++ b/res/xml/other_sound_settings.xml
@@ -44,12 +44,6 @@
             android:key="touch_sounds"
             android:title="@string/touch_sounds_title" />
 
-    <!-- Vibrate on touch -->
-    <SwitchPreference
-            android:key="vibrate_on_touch"
-            android:title="@string/vibrate_on_touch_title"
-            android:summary="@string/vibrate_on_touch_summary" />
-
     <!-- Dock speaker plays -->
     <DropDownPreference
             android:key="dock_audio_media"
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index a7b63a1..c1298db 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -119,14 +119,14 @@
         settings:controller="com.android.settings.sound.MediaControlsParentPreferenceController"
         settings:keywords="@string/keywords_media_controls"/>
 
-    <!-- Also vibrate for calls -->
+    <!-- Also vibration -->
     <Preference
-        android:fragment="com.android.settings.sound.VibrateForCallsPreferenceFragment"
-        android:key="vibrate_for_calls"
-        android:title="@string/vibrate_when_ringing_title"
+        android:fragment="com.android.settings.accessibility.VibrationSettings"
+        android:key="vibration_and_haptics"
+        android:title="@string/accessibility_vibration_settings_title"
         android:order="-90"
-        settings:controller="com.android.settings.sound.VibrateForCallsPreferenceController"
-        settings:keywords="@string/keywords_vibrate_for_calls"/>
+        settings:controller="com.android.settings.accessibility.VibrationPreferenceController"
+        settings:keywords="@string/keywords_vibration"/>
 
     <com.android.settingslib.PrimarySwitchPreference
         android:key="gesture_prevent_ringing_sound"
@@ -191,14 +191,6 @@
         android:title="@string/touch_sounds_title"
         android:order="-30"/>
 
-    <!-- Vibrate on touch -->
-    <SwitchPreference
-        android:key="vibrate_on_touch"
-        android:title="@string/vibrate_on_touch_title"
-        android:summary="@string/vibrate_on_touch_summary"
-        settings:keywords="@string/keywords_vibrate_on_touch"
-        android:order="-25"/>
-
     <!-- Dock speaker plays -->
     <DropDownPreference
         android:key="dock_audio_media"
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
index 042ce43..280c3f3 100644
--- a/res/xml/top_level_settings.xml
+++ b/res/xml/top_level_settings.xml
@@ -117,6 +117,15 @@
         settings:controller="com.android.settings.accessibility.TopLevelAccessibilityPreferenceController"/>
 
     <com.android.settings.widget.HomepagePreference
+        android:icon="@drawable/ic_settings_safety_center"
+        android:key="top_level_safety_center"
+        android:order="-55"
+        android:title="@string/safety_center_title"
+        android:summary="@string/safety_center_summary"
+        settings:highlightableMenuKey="@string/menu_key_safety_center"
+        settings:controller="com.android.settings.safetycenter.TopLevelSafetyCenterEntryPreferenceController"/>
+
+    <com.android.settings.widget.HomepagePreference
         android:fragment="com.android.settings.security.SecuritySettings"
         android:icon="@drawable/ic_settings_security_white"
         android:key="top_level_security"
@@ -133,7 +142,8 @@
         android:order="-40"
         android:title="@string/privacy_dashboard_title"
         android:summary="@string/privacy_dashboard_summary"
-        settings:highlightableMenuKey="@string/menu_key_privacy"/>
+        settings:highlightableMenuKey="@string/menu_key_privacy"
+        settings:controller="com.android.settings.privacy.TopLevelPrivacyEntryPreferenceController"/>
 
     <com.android.settings.widget.HomepagePreference
         android:fragment="com.android.settings.location.LocationSettings"
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index 5cafa1a..b3dc2ea 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -43,6 +43,12 @@
         android:icon="@drawable/ic_add_40dp"
         android:order="20"/>
 
+    <com.android.settingslib.RestrictedPreference
+        android:key="supervised_user_add"
+        android:title="@*android:string/supervised_user_creation_label"
+        android:icon="@*android:drawable/ic_add_supervised_user"
+        android:order="25"/>
+
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="user_settings_add_users_when_locked"
         android:title="@string/user_add_on_lockscreen_menu"
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 9e3d7e6..96f362c 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,16 +16,24 @@
 
 package com.android.settings;
 
+import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsRcsManager;
 import android.text.TextUtils;
 import android.util.FeatureFlagUtils;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
+import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.safetycenter.SafetyCenterStatus;
 import com.android.settings.security.SecuritySettingsFeatureProvider;
 
 import com.google.android.setupdesign.util.ThemeHelper;
@@ -90,6 +98,7 @@
     public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ }
     public static class WifiSettingsActivity extends SettingsActivity { /* empty */ }
     public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class NetworkSelectActivity extends SettingsActivity { /* empty */ }
     /** Activity for the Wi-Fi network details settings. */
     public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ }
     public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ }
@@ -123,11 +132,34 @@
     public static class AccessibilityDaltonizerSettingsActivity extends SettingsActivity { /* empty */ }
     /** Activity for lockscreen settings. */
     public static class LockScreenSettingsActivity extends SettingsActivity { /* empty */ }
+    /** Activity for bluetooth pairing settings. */
+    public static class BlueToothPairingActivity extends SettingsActivity { /* empty */ }
     /** Activity for Reduce Bright Colors. */
     public static class ReduceBrightColorsSettingsActivity extends SettingsActivity { /* empty */ }
     /** Activity for the security dashboard. */
     public static class SecurityDashboardActivity extends SettingsActivity {
 
+        private static final String TAG = "SecurityDashboardActivity";
+
+        @Override
+        protected void onCreate(Bundle savedState) {
+            super.onCreate(savedState);
+            handleSafetyCenterRedirection();
+        }
+
+        /** Redirects to SafetyCenter if enabled. */
+        @VisibleForTesting
+        public void handleSafetyCenterRedirection() {
+            if (SafetyCenterStatus.isEnabled()) {
+                try {
+                    startActivity(new Intent(Intent.ACTION_SAFETY_CENTER));
+                    finish();
+                } catch (ActivityNotFoundException e) {
+                    Log.e(TAG, "Unable to open safety center", e);
+                }
+            }
+        }
+
         /** Whether the given fragment is allowed. */
         @VisibleForTesting
         @Override
@@ -163,7 +195,30 @@
     public static class LocationSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ScanningSettingsActivity extends SettingsActivity { /* empty */ }
     public static class WifiScanningSettingsActivity extends SettingsActivity { /* empty */ }
-    public static class PrivacyDashboardActivity extends SettingsActivity { /* empty */ }
+    /** Activity for the privacy dashboard. */
+    public static class PrivacyDashboardActivity extends SettingsActivity {
+
+        private static final String TAG = "PrivacyDashboardActivity";
+
+        @Override
+        protected void onCreate(Bundle savedState) {
+            super.onCreate(savedState);
+            handleSafetyCenterRedirection();
+        }
+
+        /** Redirects to SafetyCenter if enabled. */
+        @VisibleForTesting
+        public void handleSafetyCenterRedirection() {
+            if (SafetyCenterStatus.isEnabled()) {
+                try {
+                    startActivity(new Intent(Intent.ACTION_SAFETY_CENTER));
+                    finish();
+                } catch (ActivityNotFoundException e) {
+                    Log.e(TAG, "Unable to open safety center", e);
+                }
+            }
+        }
+    }
     public static class PrivacySettingsActivity extends SettingsActivity { /* empty */ }
     public static class FactoryResetActivity extends SettingsActivity {
         @Override
@@ -301,6 +356,52 @@
     public static class WifiCallingDisclaimerActivity extends SettingsActivity { /* empty */ }
     public static class MobileNetworkListActivity extends SettingsActivity {}
     public static class PowerMenuSettingsActivity extends SettingsActivity {}
+    public static class MobileNetworkActivity extends SettingsActivity {
+
+        public static final String EXTRA_MMS_MESSAGE = "mms_message";
+        public static final String EXTRA_SHOW_CAPABILITY_DISCOVERY_OPT_IN =
+                "show_capability_discovery_opt_in";
+
+        @Override
+        public Intent getIntent() {
+            final Intent intent = new Intent(super.getIntent());
+            int subId = intent.getIntExtra(android.provider.Settings.EXTRA_SUB_ID,
+                    SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+            SubscriptionInfo subInfo = SubscriptionUtil.getSubscriptionOrDefault(
+                    getApplicationContext(), subId);
+            CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(
+                    subInfo, getApplicationContext());
+            intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
+            intent.putExtra(android.provider.Settings.EXTRA_SUB_ID, subId);
+            if (android.provider.Settings.ACTION_MMS_MESSAGE_SETTING.equals(intent.getAction())) {
+                // highlight "mms_message" preference.
+                intent.putExtra(EXTRA_FRAGMENT_ARG_KEY, EXTRA_MMS_MESSAGE);
+            }
+
+            if (doesIntentContainOptInAction(intent)) {
+                intent.putExtra(EXTRA_SHOW_CAPABILITY_DISCOVERY_OPT_IN,
+                        maybeShowContactDiscoveryDialog(subId));
+            }
+
+            return intent;
+        }
+
+        private boolean maybeShowContactDiscoveryDialog(int subId) {
+            // If this activity was launched using ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN, show the
+            // associated dialog only if the opt-in has not been granted yet.
+            return MobileNetworkUtils.isContactDiscoveryVisible(getApplicationContext(), subId)
+                    // has the user already enabled this configuration?
+                    && !MobileNetworkUtils.isContactDiscoveryEnabled(
+                            getApplicationContext(), subId);
+        }
+
+        public static boolean doesIntentContainOptInAction(Intent intent) {
+            String intentAction = (intent != null ? intent.getAction() : null);
+            return TextUtils.equals(intentAction,
+                    ImsRcsManager.ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN);
+        }
+    }
+
     /**
      * Activity for BugReportHandlerPicker.
      */
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 2b5f695..d3d3604 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -377,8 +377,9 @@
     public static Intent getTrampolineIntent(Intent intent, String highlightMenuKey) {
         final Intent detailIntent = new Intent(intent);
         // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it.
-        final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY);
-        trampolineIntent.replaceExtras(detailIntent);
+        final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY)
+                .setPackage(Utils.SETTINGS_PACKAGE_NAME)
+                .replaceExtras(detailIntent);
 
         // Relay detail intent data to prevent failure of Intent#ParseUri.
         // If Intent#getData() is not null, Intent#toUri will return an Uri which has the scheme of
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 42a6068..2988ddc 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1230,8 +1230,4 @@
     public static int getHomepageIconColorHighlight(Context context) {
         return getColorAttrDefaultColor(context, android.R.attr.textColorSecondaryInverse);
     }
-
-    public static boolean isProviderModelEnabled(Context context) {
-        return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
-    }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
index 10a0bce..7c8076f 100644
--- a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
@@ -120,8 +120,8 @@
                         : R.string.screen_zoom_title);
         ((TextView) findViewById(R.id.sud_layout_subtitle)).setText(
                 getFragmentType(getIntent()) == FragmentType.FONT_SIZE
-                        ? R.string.short_summary_font_size
-                        : R.string.screen_zoom_short_summary);
+                        ? R.string.font_size_summary
+                        : R.string.screen_zoom_summary);
     }
 
     private boolean isSuwSupportedTwoPanes() {
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index 3a6bea9..7a28e39 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -38,7 +38,6 @@
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settingslib.core.instrumentation.Instrumentable;
 import com.android.settingslib.transition.SettingsTransitionHelper;
-import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.util.ThemeHelper;
@@ -130,7 +129,6 @@
             final Intent intent = new Intent(this,
                     AccessibilityScreenSizeForSetupWizardActivity.class);
             intent.putExtra(VISION_FRAGMENT_NO, FragmentType.FONT_SIZE);
-            intent.putExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_FADE);
             startActivity(intent);
             Log.d(LOG_TAG, "Launch font size settings");
             finish();
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index c25abf3..233b7ee 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -143,9 +143,7 @@
             setPreferenceScreen(preferenceScreen);
         }
 
-        final List<String> shortcutFeatureKeys = new ArrayList<>();
-        shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS);
-        shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE);
+        final List<String> shortcutFeatureKeys = getFeatureSettingsKeys();
         mSettingsContentObserver = new SettingsContentObserver(new Handler(), shortcutFeatureKeys) {
             @Override
             public void onChange(boolean selfChange, Uri uri) {
@@ -155,6 +153,13 @@
         };
     }
 
+    protected List<String> getFeatureSettingsKeys() {
+        final List<String> shortcutFeatureKeys = new ArrayList<>();
+        shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS);
+        shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE);
+        return shortcutFeatureKeys;
+    }
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 6b4a5f2..1586c5a 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -276,6 +276,13 @@
     }
 
     @Override
+    protected List<String> getFeatureSettingsKeys() {
+        final List<String> shortcutKeys = super.getFeatureSettingsKeys();
+        shortcutKeys.add(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
+        return shortcutKeys;
+    }
+
+    @Override
     protected CharSequence getShortcutTypeSummary(Context context) {
         if (!mShortcutPreference.isChecked()) {
             return context.getText(R.string.switch_off_text);
diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
index 037f584..2ce2206 100644
--- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
+++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
@@ -53,6 +53,7 @@
 public class RemoveAccountPreferenceController extends AbstractPreferenceController
         implements PreferenceControllerMixin, OnClickListener {
 
+    private static final String TAG = "RemoveAccountPrefController";
     private static final String KEY_REMOVE_ACCOUNT = "remove_account";
 
     private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -175,10 +176,11 @@
                                 | IOException
                                 | AuthenticatorException e) {
                             // handled below
-                        }
-                        if (failed) {
+                            Log.w(TAG, "Remove account error: " + e);
                             RemoveAccountFailureDialog.show(getTargetFragment());
-                        } else {
+                        }
+                        Log.i(TAG, "failed: " + failed);
+                        if (!failed) {
                             targetActivity.finish();
                         }
                     }, null, mUserHandle);
@@ -210,7 +212,7 @@
             final Context context = getActivity();
 
             return new AlertDialog.Builder(context)
-                    .setTitle(R.string.really_remove_account_title)
+                    .setTitle(R.string.remove_account_label)
                     .setMessage(R.string.remove_account_failed)
                     .setPositiveButton(android.R.string.ok, null)
                     .create();
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
index fa61994..8484324 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
@@ -23,7 +23,6 @@
 import android.util.LayoutDirection;
 import android.util.Log;
 
-import androidx.annotation.NonNull;
 import androidx.window.embedding.ActivityFilter;
 import androidx.window.embedding.ActivityRule;
 import androidx.window.embedding.SplitController;
@@ -114,7 +113,7 @@
 
         registerTwoPanePairRule(
                 context,
-                getComponentName(context, Settings.class),
+                new ComponentName(context, Settings.class),
                 secondaryComponent,
                 secondaryIntentAction,
                 finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
@@ -123,7 +122,7 @@
 
         registerTwoPanePairRule(
                 context,
-                getComponentName(context, SettingsHomepageActivity.class),
+                new ComponentName(context, SettingsHomepageActivity.class),
                 secondaryComponent,
                 secondaryIntentAction,
                 finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
@@ -143,7 +142,7 @@
 
         registerTwoPanePairRule(
                 context,
-                getComponentName(context, SliceDeepLinkHomepageActivity.class),
+                new ComponentName(context, SliceDeepLinkHomepageActivity.class),
                 secondaryComponent,
                 secondaryIntentAction,
                 finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
@@ -179,7 +178,7 @@
 
         registerTwoPanePairRuleForSettingsHome(
                 context,
-                getComponentName(context, SubSettings.class),
+                new ComponentName(context, SubSettings.class),
                 null /* secondaryIntentAction */,
                 clearTop);
     }
@@ -191,8 +190,7 @@
         addActivityFilter(activityFilters, SliceDeepLinkHomepageActivity.class);
         addActivityFilter(activityFilters, Settings.class);
 
-        final Intent intent = new Intent();
-        intent.setComponent(getComponentName(Settings.NetworkDashboardActivity.class));
+        final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class);
         final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
                 activityFilters,
                 intent,
@@ -215,23 +213,7 @@
 
     private void addActivityFilter(Set<ActivityFilter> activityFilters,
             Class<? extends Activity> activityClass) {
-        activityFilters.add(new ActivityFilter(getComponentName(activityClass),
+        activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass),
                 null /* intentAction */));
     }
-
-    private void addActivityFilter(Set<ActivityFilter> activityFilters,
-            ComponentName componentName) {
-        activityFilters.add(new ActivityFilter(componentName, null /* intentAction */));
-    }
-
-    @NonNull
-    private ComponentName getComponentName(Class<? extends Activity> activityClass) {
-        return getComponentName(mContext, activityClass);
-    }
-
-    @NonNull
-    private static ComponentName getComponentName(Context context,
-            Class<? extends Activity> activityClass) {
-        return new ComponentName(context.getPackageName(), activityClass.getName());
-    }
 }
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index e1ea8e4..159eec6 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -205,6 +205,10 @@
         use(AdvancedAppInfoPreferenceCategoryController.class).setChildren(Arrays.asList(
                 writeSystemSettings, drawOverlay, pip, externalSource, acrossProfiles,
                 alarmsAndReminders));
+
+        final AppLocalePreferenceController appLocale =
+                use(AppLocalePreferenceController.class);
+        appLocale.setParentFragment(this);
     }
 
     @Override
diff --git a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
new file mode 100644
index 0000000..966f02d
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
@@ -0,0 +1,319 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import static com.android.settings.widget.EntityHeaderController.ActionType;
+
+import android.app.Activity;
+import android.app.LocaleManager;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.LocaleList;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.app.AlertDialog;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.applications.AppInfoBase;
+import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.applications.AppUtils;
+import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Locale;
+
+/**
+ * A fragment to show the current app locale info and help the user to select the expected locale.
+ */
+public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreference.OnClickListener {
+    private static final String TAG = "AppLocaleDetails";
+
+    private static final String CATEGORY_KEY_SUGGESTED_LANGUAGES =
+            "category_key_suggested_languages";
+    private static final String CATEGORY_KEY_ALL_LANGUAGES =
+            "category_key_all_languages";
+    private static final String KEY_APP_DESCRIPTION = "app_locale_description";
+
+    private boolean mCreated = false;
+    private AppLocaleDetailsHelper mAppLocaleDetailsHelper;
+
+    private PreferenceGroup mGroupOfSuggestedLocales;
+    private PreferenceGroup mGroupOfSupportedLocales;
+    private LayoutPreference mPrefOfDescription;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.app_locale_details);
+        mAppLocaleDetailsHelper = new AppLocaleDetailsHelper(getContext(), mPackageName);
+
+        mGroupOfSuggestedLocales =
+                getPreferenceScreen().findPreference(CATEGORY_KEY_SUGGESTED_LANGUAGES);
+        mGroupOfSupportedLocales =
+                getPreferenceScreen().findPreference(CATEGORY_KEY_ALL_LANGUAGES);
+        mPrefOfDescription = getPreferenceScreen().findPreference(KEY_APP_DESCRIPTION);
+    }
+
+    // Override here so we don't have an empty screen
+    @Override
+    public View onCreateView(LayoutInflater inflater,
+            ViewGroup container,
+            Bundle savedInstanceState) {
+        // if we don't have a package info, show a page saying this is unsupported
+        if (mPackageInfo == null) {
+            return inflater.inflate(R.layout.manage_applications_apps_unsupported, null);
+        }
+        return super.onCreateView(inflater, container, savedInstanceState);
+    }
+
+    @Override
+    public void onResume() {
+        // Update Locales first, before refresh ui.
+        mAppLocaleDetailsHelper.handleAllLocalesData();
+        super.onResume();
+    }
+
+    @Override
+    protected boolean refreshUi() {
+        if (mAppLocaleDetailsHelper.getSupportedLocales().isEmpty()) {
+            Log.d(TAG, "No supported language.");
+            mGroupOfSuggestedLocales.setVisible(false);
+            mGroupOfSupportedLocales.setVisible(false);
+            mPrefOfDescription.setVisible(true);
+            TextView description = (TextView) mPrefOfDescription.findViewById(R.id.description);
+            Locale locale = mAppLocaleDetailsHelper.getCurrentSystemLocales().get(0);
+            description.setText(getContext().getString(R.string.no_multiple_language_supported,
+                    locale.getDisplayName(locale)));
+            return true;
+        }
+
+        mGroupOfSuggestedLocales.removeAll();
+        mGroupOfSupportedLocales.removeAll();
+        Locale appLocale = AppLocaleDetailsHelper.getAppDefaultLocale(getContext(), mPackageName);
+        setLanguagesPreference(mGroupOfSuggestedLocales,
+                mAppLocaleDetailsHelper.getSuggestedLocales(), appLocale);
+        setLanguagesPreference(mGroupOfSupportedLocales,
+                mAppLocaleDetailsHelper.getSupportedLocales(), appLocale);
+        return true;
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.APPS_LOCALE_LIST;
+    }
+
+    @Override
+    protected AlertDialog createDialog(int id, int errorCode) {
+        return null;
+    }
+
+    @Override
+    public void onRadioButtonClicked(RadioButtonPreference pref) {
+        mAppLocaleDetailsHelper.setAppDefaultLocale(pref.getKey());
+        refreshUi();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        if (mCreated) {
+            Log.w(TAG, "onActivityCreated: ignoring duplicate call");
+            return;
+        }
+        mCreated = true;
+        if (mPackageInfo == null) {
+            return;
+        }
+        // Creates a head icon button of app on this page.
+        final Activity activity = getActivity();
+        final Preference pref = EntityHeaderController
+                .newInstance(activity, this, null /* header */)
+                .setRecyclerView(getListView(), getSettingsLifecycle())
+                .setIcon(Utils.getBadgedIcon(getContext(), mPackageInfo.applicationInfo))
+                .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
+                .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
+                .setPackageName(mPackageName)
+                .setUid(mPackageInfo.applicationInfo.uid)
+                .setHasAppInfoLink(true)
+                .setButtonActions(ActionType.ACTION_NONE, ActionType.ACTION_NONE)
+                .done(activity, getPrefContext());
+        getPreferenceScreen().addPreference(pref);
+    }
+
+    /**
+     * TODO (b209962418) Do a performance test to low end device.
+     * @return Return the summary to show the current app's language.
+     */
+    public static CharSequence getSummary(Context context, String packageName) {
+        Locale appLocale =
+                AppLocaleDetailsHelper.getAppDefaultLocale(context, packageName);
+        return appLocale == null ? "" : appLocale.getDisplayName(appLocale);
+    }
+
+    private void setLanguagesPreference(PreferenceGroup group,
+            Collection<Locale> locales, Locale appLocale) {
+        if (locales == null) {
+            return;
+        }
+
+        for (Locale locale : locales) {
+            RadioButtonPreference pref = new RadioButtonPreference(getContext());
+            pref.setTitle(locale.getDisplayName(locale));
+            pref.setKey(locale.toLanguageTag());
+            pref.setChecked(locale.equals(appLocale));
+            pref.setOnClickListener(this);
+            group.addPreference(pref);
+        }
+    }
+
+    @VisibleForTesting
+    static class AppLocaleDetailsHelper {
+        private String mPackageName;
+        private Context mContext;
+        private TelephonyManager mTelephonyManager;
+        private LocaleManager mLocaleManager;
+
+        private Collection<Locale> mSuggestedLocales = new ArrayList<>();;
+        private Collection<Locale> mSupportedLocales = new ArrayList<>();;
+
+        AppLocaleDetailsHelper(Context context, String packageName) {
+            mContext = context;
+            mPackageName = packageName;
+            mTelephonyManager = context.getSystemService(TelephonyManager.class);
+            mLocaleManager = context.getSystemService(LocaleManager.class);
+        }
+
+        /** Handle suggested and supported locales for UI display. */
+        public void handleAllLocalesData() {
+            clearLocalesData();
+            handleSuggestedLocales();
+            handleSupportedLocales();
+        }
+
+        /** Gets suggested locales in the app. */
+        public Collection<Locale> getSuggestedLocales() {
+            return mSuggestedLocales;
+        }
+
+        /** Gets supported locales in the app. */
+        public Collection<Locale> getSupportedLocales() {
+            return mSupportedLocales;
+        }
+
+        @VisibleForTesting
+        void handleSuggestedLocales() {
+            LocaleList currentSystemLocales = getCurrentSystemLocales();
+            Locale simLocale = mTelephonyManager.getSimLocale();
+            Locale appLocale = getAppDefaultLocale(mContext, mPackageName);
+            // 1st locale in suggested languages group.
+            if (appLocale != null) {
+                mSuggestedLocales.add(appLocale);
+            }
+            // 2nd locale in suggested languages group.
+            if (simLocale != null && !simLocale.equals(appLocale)) {
+                mSuggestedLocales.add(simLocale);
+            }
+            // Other locales in suggested languages group.
+            for (int i = 0; i < currentSystemLocales.size(); i++) {
+                Locale locale = currentSystemLocales.get(i);
+                if (!locale.equals(appLocale) && !locale.equals(simLocale)) {
+                    mSuggestedLocales.add(locale);
+                }
+            }
+        }
+
+        @VisibleForTesting
+        void handleSupportedLocales() {
+            //TODO Waiting for PackageManager api
+            String[] languages = getAssetSystemLocales();
+
+            for (String language : languages) {
+                mSupportedLocales.add(Locale.forLanguageTag(language));
+            }
+            if (mSuggestedLocales != null || !mSuggestedLocales.isEmpty()) {
+                mSupportedLocales.removeAll(mSuggestedLocales);
+            }
+        }
+
+        private void clearLocalesData() {
+            mSuggestedLocales.clear();
+            mSupportedLocales.clear();
+        }
+
+        /** Gets per app's default locale */
+        public static Locale getAppDefaultLocale(Context context, String packageName) {
+            LocaleManager localeManager = context.getSystemService(LocaleManager.class);
+            try {
+                LocaleList localeList = (localeManager == null)
+                        ? new LocaleList() : localeManager.getApplicationLocales(packageName);
+                return localeList.isEmpty() ? null : localeList.get(0);
+            } catch (IllegalArgumentException e) {
+                Log.w(TAG, "package name : " + packageName + " is not correct. " + e);
+            }
+            return null;
+        }
+
+        /** Sets per app's default language to system. */
+        public void setAppDefaultLocale(String languageTag) {
+            if (languageTag.isEmpty()) {
+                Log.w(TAG, "[setAppDefaultLocale] No language tag.");
+                return;
+            }
+            setAppDefaultLocale(LocaleList.forLanguageTags(languageTag));
+        }
+
+        /** Sets per app's default language to system. */
+        public void setAppDefaultLocale(LocaleList localeList) {
+            if (mLocaleManager == null) {
+                Log.w(TAG, "LocaleManager is null, and cannot set the app locale up.");
+                return;
+            }
+            mLocaleManager.setApplicationLocales(mPackageName, localeList);
+        }
+
+        @VisibleForTesting
+        LocaleList getCurrentSystemLocales() {
+            return Resources.getSystem().getConfiguration().getLocales();
+        }
+
+        @VisibleForTesting
+        String[] getAssetSystemLocales() {
+            try {
+                PackageManager packageManager = mContext.getPackageManager();
+                return packageManager.getResourcesForApplication(
+                        packageManager.getPackageInfo(mPackageName, PackageManager.MATCH_ALL)
+                                .applicationInfo).getAssets().getNonSystemLocales();
+            } catch (PackageManager.NameNotFoundException e) {
+                Log.w(TAG, "Can not found the package name : " + e);
+            }
+            return new String[0];
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/appinfo/AppLocalePickerActivity.java b/src/com/android/settings/applications/appinfo/AppLocalePickerActivity.java
new file mode 100644
index 0000000..ce833ed
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/AppLocalePickerActivity.java
@@ -0,0 +1,53 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.applications.AppInfoBase;
+
+/** Activity for the entry of {@link #AppLocaleDetails} from outside Settings app. */
+public class AppLocalePickerActivity extends SettingsActivity {
+    private static final String TAG = "AppLocalePickerActivity";
+
+    @Override
+    protected void onCreate(Bundle savedState) {
+        Intent intent = getEntryIntent(getIntent());
+        if (intent == null) {
+            finish();
+            return;
+        }
+        setIntent(intent);
+        super.onCreate(savedState);
+    }
+
+    @VisibleForTesting
+    Intent getEntryIntent(Intent intent) {
+        String callingPackage = getCallingPackage();
+        if (callingPackage == null || callingPackage.isEmpty()) {
+            Log.d(TAG, "No calling package name is found.");
+            return null;
+        }
+        final Bundle fragmentArgs = new Bundle();
+        fragmentArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, callingPackage);
+        return intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
+    }
+}
diff --git a/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
new file mode 100644
index 0000000..f1e43ad
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
@@ -0,0 +1,48 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import com.android.settings.SettingsPreferenceFragment;
+
+/**
+ * A controller to update current locale information of application.
+ */
+public class AppLocalePreferenceController extends AppInfoPreferenceControllerBase {
+    public AppLocalePreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return FeatureFlagUtils
+                .isEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION)
+                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() {
+        return AppLocaleDetails.class;
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        return AppLocaleDetails.getSummary(mContext, mParent.getAppEntry().info.packageName);
+    }
+}
diff --git a/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java
new file mode 100644
index 0000000..aa12b62
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java
@@ -0,0 +1,40 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import com.android.settings.core.BasePreferenceController;
+
+/**
+ * A controller to update current locale information of application
+ * and a entry to launch {@link ManageApplications}.
+ * TODO(209775925) After feature release, this class may be removed.
+ */
+public class ManageAppLocalePreferenceController extends BasePreferenceController {
+    public ManageAppLocalePreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return FeatureFlagUtils
+                .isEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION)
+                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 7b5c221..d985482 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -108,6 +108,7 @@
 import com.android.settings.applications.UsageAccessDetails;
 import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails;
 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
+import com.android.settings.applications.appinfo.AppLocaleDetails;
 import com.android.settings.applications.appinfo.DrawOverlayDetails;
 import com.android.settings.applications.appinfo.ExternalSourcesDetails;
 import com.android.settings.applications.appinfo.ManageExternalStorageDetails;
@@ -231,6 +232,7 @@
     public static final int LIST_MANAGE_EXTERNAL_STORAGE = 11;
     public static final int LIST_TYPE_ALARMS_AND_REMINDERS = 12;
     public static final int LIST_TYPE_MEDIA_MANAGEMENT_APPS = 13;
+    public static final int LIST_TYPE_APPS_LOCAL = 14;
 
     // List types that should show instant apps.
     public static final Set<Integer> LIST_TYPES_WITH_INSTANT = new ArraySet<>(Arrays.asList(
@@ -318,6 +320,8 @@
                     ServiceManager.getService(Context.USAGE_STATS_SERVICE));
             mNotificationBackend = new NotificationBackend();
             mSortOrder = R.id.sort_order_recent_notification;
+        } else if (className.equals(AppLocaleDetails.class.getName())) {
+            mListType = LIST_TYPE_APPS_LOCAL;
         } else {
             mListType = LIST_TYPE_MAIN;
         }
@@ -500,6 +504,8 @@
                 return SettingsEnums.ALARMS_AND_REMINDERS;
             case LIST_TYPE_MEDIA_MANAGEMENT_APPS:
                 return SettingsEnums.MEDIA_MANAGEMENT_APPS;
+            case LIST_TYPE_APPS_LOCAL:
+                return SettingsEnums.APPS_LOCALE_LIST;
             default:
                 return SettingsEnums.PAGE_UNKNOWN;
         }
@@ -623,6 +629,10 @@
                 startAppInfoFragment(MediaManagementAppsDetails.class,
                         R.string.media_management_apps_title);
                 break;
+            case LIST_TYPE_APPS_LOCAL:
+                startAppInfoFragment(AppLocaleDetails.class,
+                        R.string.app_locale_picker_title);
+                break;
             // TODO: Figure out if there is a way where we can spin up the profile's settings
             // process ahead of time, to avoid a long load of data when user clicks on a managed
             // app. Maybe when they load the list of apps that contains managed profile apps.
@@ -899,6 +909,8 @@
             screenTitle = R.string.alarms_and_reminders_title;
         } else if (className.equals(Settings.NotificationAppListActivity.class.getName())) {
             screenTitle = R.string.app_notifications_title;
+        } else if (className.equals(AppLocaleDetails.class.getName())) {
+            screenTitle = R.string.app_locales_picker_menu_title;
         } else {
             if (screenTitle == -1) {
                 screenTitle = R.string.all_apps;
@@ -1521,6 +1533,10 @@
                 case LIST_TYPE_MEDIA_MANAGEMENT_APPS:
                     holder.setSummary(MediaManagementAppsDetails.getSummary(mContext, entry));
                     break;
+                case LIST_TYPE_APPS_LOCAL:
+                    holder.setSummary(AppLocaleDetails
+                            .getSummary(mContext, entry.info.packageName));
+                    break;
                 default:
                     holder.updateSizeText(entry, mManageApplications.mInvalidSizeStr, mWhichSize);
                     break;
diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java
index 7dd6385..5ee7880 100644
--- a/src/com/android/settings/biometrics/BiometricUtils.java
+++ b/src/com/android/settings/biometrics/BiometricUtils.java
@@ -22,6 +22,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.hardware.biometrics.SensorProperties;
+import android.hardware.face.FaceManager;
+import android.hardware.face.FaceSensorPropertiesInternal;
 import android.os.storage.StorageManager;
 import android.util.Log;
 import android.view.Surface;
@@ -273,4 +276,17 @@
     public static boolean isReverseLandscape(@NonNull Context context) {
         return context.getDisplay().getRotation() == Surface.ROTATION_270;
     }
+
+    /**
+     * @param faceManager
+     * @return True if at least one sensor is set as a convenience.
+     */
+    public static boolean isConvenience(@NonNull FaceManager faceManager) {
+        for (FaceSensorPropertiesInternal props : faceManager.getSensorPropertiesInternal()) {
+            if (props.sensorStrength == SensorProperties.STRENGTH_CONVENIENCE) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/settings/biometrics/OWNERS b/src/com/android/settings/biometrics/OWNERS
index 23eaf7e..99dd654 100644
--- a/src/com/android/settings/biometrics/OWNERS
+++ b/src/com/android/settings/biometrics/OWNERS
@@ -1,5 +1,6 @@
 # Default reviewers for this and subdirectories.
 curtislb@google.com
+graciecheng@google.com
 ilyamaty@google.com
 jaggies@google.com
 jbolinger@google.com
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
index 74ea27b..eadb5b8 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
@@ -19,10 +19,12 @@
 import android.app.admin.DevicePolicyManager;
 import android.app.settings.SettingsEnums;
 import android.content.Intent;
+import android.hardware.SensorPrivacyManager;
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.face.FaceManager;
 import android.hardware.face.FaceSensorPropertiesInternal;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -34,10 +36,12 @@
 
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settings.biometrics.BiometricEnrollActivity;
 import com.android.settings.biometrics.BiometricEnrollIntroduction;
 import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.password.ChooseLockSettingsHelper;
+import com.android.settings.utils.SensorPrivacyManagerHelper;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 
 import com.google.android.setupcompat.template.FooterButton;
@@ -57,6 +61,7 @@
     private FaceFeatureProvider mFaceFeatureProvider;
     @Nullable private FooterButton mPrimaryFooterButton;
     @Nullable private FooterButton mSecondaryFooterButton;
+    @Nullable private SensorPrivacyManager mSensorPrivacyManager;
 
     @Override
     protected void onCancelButtonClick(View view) {
@@ -150,6 +155,14 @@
                 });
             }
         }
+
+        mSensorPrivacyManager = getApplicationContext()
+                .getSystemService(SensorPrivacyManager.class);
+        final SensorPrivacyManagerHelper helper = SensorPrivacyManagerHelper
+                .getInstance(getApplicationContext());
+        final boolean cameraPrivacyEnabled = helper
+                .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA, mUserId);
+        Log.v(TAG, "cameraPrivacyEnabled : " + cameraPrivacyEnabled);
     }
 
     protected boolean generateChallengeOnCreate() {
@@ -309,6 +322,28 @@
     }
 
     @Override
+    protected void onNextButtonClick(View view) {
+        final boolean parentelConsentRequired =
+                getIntent()
+                .getBooleanExtra(BiometricEnrollActivity.EXTRA_REQUIRE_PARENTAL_CONSENT, false);
+        final boolean cameraPrivacyEnabled = SensorPrivacyManagerHelper
+                .getInstance(getApplicationContext())
+                .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA, mUserId);
+        final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
+        final boolean isSettingUp = isSetupWizard || (parentelConsentRequired
+                && !WizardManagerHelper.isUserSetupComplete(this));
+        if (cameraPrivacyEnabled && !isSettingUp) {
+            if (mSensorPrivacyManager == null) {
+                mSensorPrivacyManager = getApplicationContext()
+                        .getSystemService(SensorPrivacyManager.class);
+            }
+            mSensorPrivacyManager.showSensorUseDialog(SensorPrivacyManager.Sensors.CAMERA);
+        } else {
+            super.onNextButtonClick(view);
+        }
+    }
+
+    @Override
     @NonNull
     protected FooterButton getPrimaryFooterButton() {
         if (mPrimaryFooterButton == null) {
diff --git a/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
index d8ff482..616b736 100644
--- a/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceSettingsRemoveButtonPreferenceController.java
@@ -33,6 +33,7 @@
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.overlay.FeatureFactory;
@@ -56,6 +57,7 @@
 
     public static class ConfirmRemoveDialog extends InstrumentedDialogFragment {
 
+        private boolean mIsConvenience;
         private DialogInterface.OnClickListener mOnClickListener;
 
         @Override
@@ -68,7 +70,9 @@
             AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 
             builder.setTitle(R.string.security_settings_face_settings_remove_dialog_title)
-                    .setMessage(R.string.security_settings_face_settings_remove_dialog_details)
+                    .setMessage(mIsConvenience
+                            ? R.string.security_settings_face_settings_remove_dialog_details_convenience
+                            : R.string.security_settings_face_settings_remove_dialog_details)
                     .setPositiveButton(R.string.delete, mOnClickListener)
                     .setNegativeButton(R.string.cancel, mOnClickListener);
             AlertDialog dialog = builder.create();
@@ -76,6 +80,10 @@
             return dialog;
         }
 
+        public void setIsConvenience(boolean isConvenience) {
+            mIsConvenience = isConvenience;
+        }
+
         public void setOnClickListener(DialogInterface.OnClickListener listener) {
             mOnClickListener = listener;
         }
@@ -197,6 +205,7 @@
             mRemoving = true;
             ConfirmRemoveDialog dialog = new ConfirmRemoveDialog();
             dialog.setOnClickListener(mOnClickListener);
+            dialog.setIsConvenience(BiometricUtils.isConvenience(mFaceManager));
             dialog.show(mActivity.getSupportFragmentManager(), ConfirmRemoveDialog.class.getName());
         }
     }
diff --git a/src/com/android/settings/connecteddevice/usb/UsbBackend.java b/src/com/android/settings/connecteddevice/usb/UsbBackend.java
index 244818f..7f3a598 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbBackend.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbBackend.java
@@ -41,7 +41,10 @@
  */
 public class UsbBackend {
 
-    static final int PD_ROLE_SWAP_TIMEOUT_MS = 3000;
+    // extend this value from 3s to 4s because of switching data role
+    // in USB driver side takes about 3s in some devices, plus the usb
+    // port change event dispatching time, 3s is not enough.
+    static final int PD_ROLE_SWAP_TIMEOUT_MS = 4000;
     static final int NONPD_ROLE_SWAP_TIMEOUT_MS = 15000;
 
     private final boolean mFileTransferRestricted;
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index f8efcee..c88fe46 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -42,6 +42,7 @@
 import com.android.settings.applications.UsageAccessDetails;
 import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails;
 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
+import com.android.settings.applications.appinfo.AppLocaleDetails;
 import com.android.settings.applications.appinfo.DrawOverlayDetails;
 import com.android.settings.applications.appinfo.ExternalSourcesDetails;
 import com.android.settings.applications.appinfo.ManageExternalStorageDetails;
@@ -68,6 +69,7 @@
 import com.android.settings.biometrics.face.FaceSettings;
 import com.android.settings.biometrics.fingerprint.FingerprintSettings;
 import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
+import com.android.settings.bluetooth.BluetoothPairingDetail;
 import com.android.settings.bugreporthandler.BugReportHandlerPicker;
 import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
@@ -122,6 +124,8 @@
 import com.android.settings.network.NetworkProviderSettings;
 import com.android.settings.network.apn.ApnEditor;
 import com.android.settings.network.apn.ApnSettings;
+import com.android.settings.network.telephony.MobileNetworkSettings;
+import com.android.settings.network.telephony.NetworkSelectSettings;
 import com.android.settings.nfc.AndroidBeam;
 import com.android.settings.nfc.PaymentSettings;
 import com.android.settings.notification.ConfigureNotificationSettings;
@@ -178,6 +182,7 @@
     public static final String[] ENTRY_FRAGMENTS = {
             AdvancedConnectedDeviceDashboardFragment.class.getName(),
             CreateShortcut.class.getName(),
+            BluetoothPairingDetail.class.getName(),
             WifiSettings.class.getName(),
             WifiNetworkDetailsFragment.class.getName(),
             ConfigureWifiSettings.class.getName(),
@@ -322,10 +327,13 @@
             InteractAcrossProfilesDetails.class.getName(),
             MediaControlsSettings.class.getName(),
             NetworkProviderSettings.class.getName(),
+            NetworkSelectSettings.class.getName(),
             AlarmsAndRemindersDetails.class.getName(),
             MediaManagementAppsDetails.class.getName(),
             AutoBrightnessSettings.class.getName(),
-            OneHandedSettings.class.getName()
+            OneHandedSettings.class.getName(),
+            MobileNetworkSettings.class.getName(),
+            AppLocaleDetails.class.getName()
     };
 
     public static final String[] SETTINGS_FOR_RESTRICTED = {
@@ -347,6 +355,7 @@
             Settings.WifiSettingsActivity.class.getName(),
             Settings.DataUsageSummaryActivity.class.getName(),
             Settings.NetworkProviderSettingsActivity.class.getName(),
+            Settings.NetworkSelectActivity.class.getName(),
             // Home page > Connected devices
             Settings.BluetoothSettingsActivity.class.getName(),
             Settings.WifiDisplaySettingsActivity.class.getName(),
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 91d703d..cdac3b9 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -36,7 +36,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.DialogInterface.OnCancelListener;
 import android.content.IContentProvider;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -63,6 +62,7 @@
 import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
 import com.android.settings.activityembedding.ActivityEmbeddingUtils;
 import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
+import com.android.settings.homepage.TopLevelHighlightMixin;
 import com.android.settings.homepage.TopLevelSettings;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.PrimarySwitchPreference;
@@ -170,27 +170,23 @@
                 if (action != null) {
                     intent.setAction(action);
                 }
+                // Register the rule for injected apps.
+                ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
+                        mContext,
+                        new ComponentName(tile.getPackageName(), tile.getComponentName()),
+                        action,
+                        true /* clearTop */);
                 pref.setOnPreferenceClickListener(preference -> {
-                    OnCancelListener listener = null;
+                    TopLevelHighlightMixin highlightMixin = null;
                     if (fragment instanceof TopLevelSettings
                             && ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) {
-                        // Register the rule for injected apps.
-                        ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
-                                mContext,
-                                new ComponentName(tile.getPackageName(), tile.getComponentName()),
-                                null /* secondaryIntentAction */,
-                                true /* clearTop */);
-
-                        // Highlight preference ui.
+                        // Highlight the preference whenever it's clicked
                         final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment;
-                        // Highlight the tile immediately whenever it's clicked
                         topLevelSettings.setHighlightPreferenceKey(key);
-                        // If the tile allows users to select profile, the pop-op dialog may be
-                        // cancelled and then the previous highlight entry should be restored.
-                        listener = dialog -> topLevelSettings.restorePreviousHighlight();
+                        highlightMixin = topLevelSettings.getHighlightMixin();
                     }
                     launchIntentOrSelectProfile(activity, tile, intent, sourceMetricsCategory,
-                            listener);
+                            highlightMixin);
                     return true;
                 });
             }
@@ -223,7 +219,7 @@
                         SettingsEnums.DASHBOARD_SUMMARY)
                 .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
         launchIntentOrSelectProfile(activity, tile, intent, SettingsEnums.DASHBOARD_SUMMARY,
-                /* listener= */ null);
+                /* highlightMixin= */ null);
     }
 
     private DynamicDataObserver createDynamicDataObserver(String method, Uri uri, Preference pref) {
@@ -438,7 +434,7 @@
     }
 
     private void launchIntentOrSelectProfile(FragmentActivity activity, Tile tile, Intent intent,
-            int sourceMetricCategory, OnCancelListener listener) {
+            int sourceMetricCategory, TopLevelHighlightMixin highlightMixin) {
         if (!isIntentResolvable(intent)) {
             Log.w(TAG, "Cannot resolve intent, skipping. " + intent);
             return;
@@ -469,7 +465,9 @@
             }
 
             ProfileSelectDialog.show(activity.getSupportFragmentManager(), tile,
-                    sourceMetricCategory, listener);
+                    sourceMetricCategory, /* onShowListener= */ highlightMixin,
+                    /* onDismissListener= */ highlightMixin,
+                    /* onCancelListener= */ highlightMixin);
         }
     }
 
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectDialog.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectDialog.java
index b05f23b..e0ba378 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileSelectDialog.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectDialog.java
@@ -21,6 +21,8 @@
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.DialogInterface.OnShowListener;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserHandle;
@@ -45,23 +47,30 @@
 
     private int mSourceMetricCategory;
     private Tile mSelectedTile;
+    private OnShowListener mOnShowListener;
     private OnCancelListener mOnCancelListener;
+    private OnDismissListener mOnDismissListener;
 
     /**
      * Display the profile select dialog, adding the fragment to the given FragmentManager.
      * @param manager The FragmentManager this fragment will be added to.
      * @param tile The tile for this fragment.
      * @param sourceMetricCategory The source metric category.
-     * @param listener The listener listens to the dialog cancelling event.
+     * @param onShowListener The listener listens to the dialog showing event.
+     * @param onDismissListener The listener listens to the dialog dismissing event.
+     * @param onCancelListener The listener listens to the dialog cancelling event.
      */
     public static void show(FragmentManager manager, Tile tile, int sourceMetricCategory,
-            OnCancelListener listener) {
+            OnShowListener onShowListener, OnDismissListener onDismissListener,
+            OnCancelListener onCancelListener) {
         final ProfileSelectDialog dialog = new ProfileSelectDialog();
         final Bundle args = new Bundle();
         args.putParcelable(ARG_SELECTED_TILE, tile);
         args.putInt(ARG_SOURCE_METRIC_CATEGORY, sourceMetricCategory);
         dialog.setArguments(args);
-        dialog.mOnCancelListener = listener;
+        dialog.mOnShowListener = onShowListener;
+        dialog.mOnDismissListener = onDismissListener;
+        dialog.mOnCancelListener = onCancelListener;
         dialog.show(manager, "select_profile");
     }
 
@@ -97,12 +106,30 @@
     }
 
     @Override
+    public void onStart() {
+        super.onStart();
+        // The fragment shows the dialog within onStart()
+        if (mOnShowListener != null) {
+            mOnShowListener.onShow(getDialog());
+        }
+    }
+
+    @Override
     public void onCancel(DialogInterface dialog) {
+        super.onCancel(dialog);
         if (mOnCancelListener != null) {
             mOnCancelListener.onCancel(dialog);
         }
     }
 
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        super.onDismiss(dialog);
+        if (mOnDismissListener != null) {
+            mOnDismissListener.onDismiss(dialog);
+        }
+    }
+
     public static void updateUserHandlesIfNeeded(Context context, Tile tile) {
         final List<UserHandle> userHandles = tile.userHandle;
         if (tile.userHandle == null || tile.userHandle.size() <= 1) {
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index f72a006..cd033e3 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -142,12 +142,7 @@
         mChart = findPreference(KEY_CHART_DATA);
         mApps = findPreference(KEY_APPS_GROUP);
 
-        // TODO(b/167474581): This is a temporary solution to hide unnecessary warning
-        //  preference, when the provider model is completed, the following code should be removed.
-        final Preference unnecessaryWarningPreference =
-                FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)
-                        ? findPreference("operator_warning")
-                        : findPreference("non_carrier_data_usage_warning");
+        final Preference unnecessaryWarningPreference = findPreference("operator_warning");
         if (unnecessaryWarningPreference != null) {
             unnecessaryWarningPreference.setVisible(false);
         }
diff --git a/src/com/android/settings/development/BluetoothA2dpConfigStore.java b/src/com/android/settings/development/BluetoothA2dpConfigStore.java
index 0b154d2..7fd7b13 100644
--- a/src/com/android/settings/development/BluetoothA2dpConfigStore.java
+++ b/src/com/android/settings/development/BluetoothA2dpConfigStore.java
@@ -71,10 +71,16 @@
     }
 
     public BluetoothCodecConfig createCodecConfig() {
-        return new BluetoothCodecConfig(mCodecType, mCodecPriority,
-                mSampleRate, mBitsPerSample,
-                mChannelMode, mCodecSpecific1Value,
-                mCodecSpecific2Value, mCodecSpecific3Value,
-                mCodecSpecific4Value);
+        return new BluetoothCodecConfig.Builder()
+                .setCodecType(mCodecType)
+                .setCodecPriority(mCodecPriority)
+                .setSampleRate(mSampleRate)
+                .setBitsPerSample(mBitsPerSample)
+                .setChannelMode(mChannelMode)
+                .setCodecSpecific1(mCodecSpecific1Value)
+                .setCodecSpecific2(mCodecSpecific2Value)
+                .setCodecSpecific3(mCodecSpecific3Value)
+                .setCodecSpecific4(mCodecSpecific4Value)
+                .build();
     }
 }
diff --git a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
index 765c5f8..1af6e96 100644
--- a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
@@ -30,6 +30,8 @@
 import com.android.settings.development.BluetoothA2dpConfigStore;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
+import java.util.List;
+
 /**
  * Abstract class for Bluetooth A2DP config dialog controller in developer option.
  */
@@ -170,7 +172,7 @@
      *
      * @return Array of {@link BluetoothCodecConfig}.
      */
-    protected BluetoothCodecConfig[] getSelectableConfigs(BluetoothDevice device) {
+    protected List<BluetoothCodecConfig> getSelectableConfigs(BluetoothDevice device) {
         final BluetoothA2dp bluetoothA2dp = mBluetoothA2dp;
         if (bluetoothA2dp == null) {
             return null;
@@ -198,11 +200,7 @@
             Log.d(TAG, "Unable to get selectable config. No active device.");
             return null;
         }
-        final BluetoothCodecConfig[] configs = getSelectableConfigs(activeDevice);
-        if (configs == null) {
-            Log.d(TAG, "Unable to get selectable config. Selectable configs is empty.");
-            return null;
-        }
+        final List<BluetoothCodecConfig> configs = getSelectableConfigs(activeDevice);
         for (BluetoothCodecConfig config : configs) {
             if (config.getCodecType() == codecTypeValue) {
                 return config;
@@ -220,7 +218,7 @@
     public void onHDAudioEnabled(boolean enabled) {}
 
     static int getHighestCodec(BluetoothA2dp bluetoothA2dp, BluetoothDevice activeDevice,
-            BluetoothCodecConfig[] configs) {
+            List<BluetoothCodecConfig> configs) {
         if (configs == null) {
             Log.d(TAG, "Unable to get highest codec. Configs are empty");
             return BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID;
@@ -231,8 +229,8 @@
             return BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
         }
         for (int i = 0; i < CODEC_TYPES.length; i++) {
-            for (int j = 0; j < configs.length; j++) {
-                if ((configs[j].getCodecType() == CODEC_TYPES[i])) {
+            for (BluetoothCodecConfig config : configs) {
+                if (config.getCodecType() == CODEC_TYPES[i]) {
                     return CODEC_TYPES[i];
                 }
             }
diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java
index b1b58e5..5f916f3 100644
--- a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java
@@ -77,7 +77,7 @@
         // Check HD audio is enabled, display the available list.
         if (bluetoothA2dp.isOptionalCodecsEnabled(activeDevice)
                 == BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED) {
-            BluetoothCodecConfig[] configs = getSelectableConfigs(activeDevice);
+            List<BluetoothCodecConfig> configs = getSelectableConfigs(activeDevice);
             if (configs != null) {
                 return getIndexFromConfig(configs);
             }
@@ -153,10 +153,10 @@
         writeConfigurationValues(/* index= */ 0);
     }
 
-    private List<Integer> getIndexFromConfig(BluetoothCodecConfig[] configs) {
+    private List<Integer> getIndexFromConfig(List<BluetoothCodecConfig> configs) {
         List<Integer> indexArray = new ArrayList<>();
-        for (int i = 0; i < configs.length; i++) {
-            indexArray.add(convertCfgToBtnIndex(configs[i].getCodecType()));
+        for (BluetoothCodecConfig config : configs) {
+            indexArray.add(convertCfgToBtnIndex(config.getCodecType()));
         }
         return indexArray;
     }
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
index 6c32c59..d196af7 100644
--- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
@@ -159,6 +159,6 @@
 
     @VisibleForTesting
     protected Preference createNewPreference(Context context) {
-        return new Preference(context);
+        return new PhoneNumberSummaryPreference(context);
     }
 }
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberSummaryPreference.java b/src/com/android/settings/deviceinfo/PhoneNumberSummaryPreference.java
new file mode 100644
index 0000000..2e31084
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/PhoneNumberSummaryPreference.java
@@ -0,0 +1,57 @@
+/*
+ * 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.settings.deviceinfo;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+/**
+ * Preference which support phone number talkback in summary part.
+ */
+public class PhoneNumberSummaryPreference extends Preference {
+
+    /**
+     * Constructor
+     * @param context
+     */
+    public PhoneNumberSummaryPreference(Context context) {
+        this(context, null);
+    }
+
+    /**
+     * Constructor
+     * @param context
+     * @param attrs
+     */
+    public PhoneNumberSummaryPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+
+        // Expand text to support phone number talkback.
+        TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
+        if (summaryView != null) {
+            summaryView.setText(PhoneNumberUtil.expandByTts(summaryView.getText()));
+        }
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberUtil.java b/src/com/android/settings/deviceinfo/PhoneNumberUtil.java
new file mode 100644
index 0000000..77e02b4
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/PhoneNumberUtil.java
@@ -0,0 +1,65 @@
+/*
+ * 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.settings.deviceinfo;
+
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.text.style.TtsSpan;
+
+import java.util.Arrays;
+import java.util.stream.IntStream;
+
+/**
+ * Helper class to detect format of phone number.
+ */
+public class PhoneNumberUtil {
+
+    /**
+     * Convert given text to support phone number talkback.
+     * @param text given
+     * @return converted text
+     */
+    public static CharSequence expandByTts(CharSequence text) {
+        if ((text == null) || (text.length() <= 0)
+            || (!isPhoneNumberDigits(text))) {
+            return text;
+        }
+        Spannable spannable = new SpannableStringBuilder(text);
+        TtsSpan span = new TtsSpan.DigitsBuilder(text.toString()).build();
+        spannable.setSpan(span, 0, spannable.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return spannable;
+    }
+
+    /**
+     * Check if given text may contains a phone id related numbers.
+     * (ex: phone number, IMEI, ICCID)
+     * @param text given
+     * @return true when given text is a phone id related number.
+     */
+    private static boolean isPhoneNumberDigits(CharSequence text) {
+        long textLength = (long)text.length();
+        return (textLength == text.chars()
+                .filter(c -> isPhoneNumberDigit(c)).count());
+    }
+
+    private static boolean isPhoneNumberDigit(int c) {
+        return ((c >= (int)'0') && (c <= (int)'9'))
+            || (c == (int)'-') || (c == (int)'+')
+            || (c == (int)'(') || (c == (int)')');
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
index a10b9f1..1ae6b40 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
@@ -21,11 +21,6 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.text.Spannable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.TtsSpan;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
@@ -53,19 +48,6 @@
     @VisibleForTesting
     static final int ID_GSM_SETTINGS = R.id.gsm_settings;
 
-    private static CharSequence getTextAsDigits(CharSequence text) {
-        if (TextUtils.isEmpty(text)) {
-            return "";
-        }
-        if (TextUtils.isDigitsOnly(text)) {
-            final Spannable spannable = new SpannableStringBuilder(text);
-            final TtsSpan span = new TtsSpan.DigitsBuilder(text.toString()).build();
-            spannable.setSpan(span, 0, spannable.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-            text = spannable;
-        }
-        return text;
-    }
-
     private final ImeiInfoDialogFragment mDialog;
     private final TelephonyManager mTelephonyManager;
     private final SubscriptionInfo mSubscriptionInfo;
@@ -121,10 +103,9 @@
         if ((mSubscriptionInfo != null && isCdmaLteEnabled()) ||
                     (mSubscriptionInfo == null && isSimPresent(mSlotId))) {
             // Show IMEI for LTE device
-            mDialog.setText(ID_IMEI_VALUE,
-                    getTextAsDigits(mTelephonyManager.getImei(mSlotId)));
+            mDialog.setText(ID_IMEI_VALUE, mTelephonyManager.getImei(mSlotId));
             mDialog.setText(ID_IMEI_SV_VALUE,
-                    getTextAsDigits(mTelephonyManager.getDeviceSoftwareVersion(mSlotId)));
+                    mTelephonyManager.getDeviceSoftwareVersion(mSlotId));
         } else {
             // device is not GSM/UMTS, do not display GSM/UMTS features
             mDialog.removeViewFromScreen(ID_GSM_SETTINGS);
@@ -132,9 +113,9 @@
     }
 
     private void updateDialogForGsmPhone() {
-        mDialog.setText(ID_IMEI_VALUE, getTextAsDigits(mTelephonyManager.getImei(mSlotId)));
+        mDialog.setText(ID_IMEI_VALUE, mTelephonyManager.getImei(mSlotId));
         mDialog.setText(ID_IMEI_SV_VALUE,
-                getTextAsDigits(mTelephonyManager.getDeviceSoftwareVersion(mSlotId)));
+                mTelephonyManager.getDeviceSoftwareVersion(mSlotId));
         // device is not CDMA, do not display CDMA features
         mDialog.removeViewFromScreen(ID_CDMA_SETTINGS);
     }
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogFragment.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogFragment.java
index b2f083f..c8d78da 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogFragment.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogFragment.java
@@ -31,8 +31,12 @@
 import androidx.fragment.app.FragmentManager;
 
 import com.android.settings.R;
+import com.android.settings.deviceinfo.PhoneNumberUtil;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
+import java.util.Arrays;
+import java.util.stream.IntStream;
+
 public class ImeiInfoDialogFragment extends InstrumentedDialogFragment {
 
     @VisibleForTesting
@@ -83,13 +87,27 @@
         }
     }
 
+    /**
+     * View ID(s) which is digit format (instead of decimal number) text.
+     **/
+    private static final int [] sViewIdsInDigitFormat = IntStream
+            .of(ImeiInfoDialogController.ID_MEID_NUMBER_VALUE,
+                    ImeiInfoDialogController.ID_MIN_NUMBER_VALUE,
+                    ImeiInfoDialogController.ID_IMEI_VALUE,
+                    ImeiInfoDialogController.ID_IMEI_SV_VALUE)
+            .sorted().toArray();
+
     public void setText(int viewId, CharSequence text) {
         final TextView textView = mRootView.findViewById(viewId);
+        if (textView == null) {
+            return;
+        }
         if (TextUtils.isEmpty(text)) {
             text = getResources().getString(R.string.device_info_default);
         }
-        if (textView != null) {
-            textView.setText(text);
+        else if (Arrays.binarySearch(sViewIdsInDigitFormat, viewId) >= 0) {
+            text = PhoneNumberUtil.expandByTts(text);
         }
+        textView.setText(text);
     }
 }
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
index 407e4e5..e0bff6d 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
@@ -32,6 +32,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.deviceinfo.PhoneNumberSummaryPreference;
 import com.android.settings.slices.Sliceable;
 import com.android.settingslib.Utils;
 
@@ -162,6 +163,6 @@
 
     @VisibleForTesting
     Preference createNewPreference(Context context) {
-        return new Preference(context);
+        return new PhoneNumberSummaryPreference(context);
     }
 }
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index f2bce78..2cf523f 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -134,7 +134,7 @@
                         }
                         if (SubscriptionManager.isValidSubscriptionId(nextSubId)) {
                             mTelephonyManager =
-                                    mTelephonyManager.createForSubscriptionId(nextSubId);
+                                    getTelephonyManager().createForSubscriptionId(nextSubId);
                             registerImsRegistrationCallback(nextSubId);
                         }
                     }
@@ -228,6 +228,11 @@
         }
     }
 
+    @VisibleForTesting
+    public TelephonyManager getTelephonyManager() {
+        return mTelephonyManager;
+    }
+
     public void initialize() {
         requestForUpdateEid();
 
@@ -235,7 +240,7 @@
             return;
         }
         mTelephonyManager =
-            mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
+            getTelephonyManager().createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
         mTelephonyCallback = new SimStatusDialogTelephonyCallback();
         updateLatestAreaInfo();
         updateSubscriptionStatus();
@@ -246,8 +251,8 @@
 
         // getServiceState() may return null when the subscription is inactive
         // or when there was an error communicating with the phone process.
-        final ServiceState serviceState = mTelephonyManager.getServiceState();
-        final SignalStrength signalStrength = mTelephonyManager.getSignalStrength();
+        final ServiceState serviceState = getTelephonyManager().getServiceState();
+        final SignalStrength signalStrength = getTelephonyManager().getSignalStrength();
 
         updatePhoneNumber();
         updateServiceState(serviceState);
@@ -279,9 +284,10 @@
         if (mSubscriptionInfo == null) {
             return;
         }
-        mTelephonyManager = mTelephonyManager.createForSubscriptionId(
+        mTelephonyManager = getTelephonyManager().createForSubscriptionId(
                 mSubscriptionInfo.getSubscriptionId());
-        mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
+        getTelephonyManager()
+                .registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
         mSubscriptionManager.addOnSubscriptionsChangedListener(
                 mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
         registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
@@ -304,7 +310,7 @@
             if (mIsRegisteredListener) {
                 mSubscriptionManager.removeOnSubscriptionsChangedListener(
                         mOnSubscriptionsChangedListener);
-                mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
+                getTelephonyManager().unregisterTelephonyCallback(mTelephonyCallback);
                 if (mShowLatestAreaInfo) {
                     mContext.unregisterReceiver(mAreaInfoReceiver);
                 }
@@ -315,7 +321,7 @@
 
         unregisterImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
         mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
-        mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
+        getTelephonyManager().unregisterTelephonyCallback(mTelephonyCallback);
 
         if (mShowLatestAreaInfo) {
             mContext.unregisterReceiver(mAreaInfoReceiver);
@@ -329,7 +335,7 @@
     }
 
     @VisibleForTesting
-    protected void updatePhoneNumber() {
+    public void updatePhoneNumber() {
         // If formattedNumber is null or empty, it'll display as "Unknown".
         mDialog.setText(PHONE_NUMBER_VALUE_ID,
                 DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo));
@@ -433,7 +439,7 @@
     private void updateLatestAreaInfo() {
         mShowLatestAreaInfo = Resources.getSystem().getBoolean(
                 com.android.internal.R.bool.config_showAreaUpdateInfoSettings)
-                && mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA;
+                && getTelephonyManager().getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA;
 
         if (mShowLatestAreaInfo) {
             // Bind cell broadcast service to get the area info. The info will be updated once
@@ -451,7 +457,7 @@
             resetSignalStrength();
         } else if (!Utils.isInService(mPreviousServiceState)) {
             // If ServiceState changed from out of service -> in service, update signal strength.
-            updateSignalStrength(mTelephonyManager.getSignalStrength());
+            updateSignalStrength(getTelephonyManager().getSignalStrength());
         }
 
         String serviceStateValue;
@@ -498,7 +504,7 @@
             return;
         }
 
-        ServiceState serviceState = mTelephonyManager.getServiceState();
+        ServiceState serviceState = getTelephonyManager().getServiceState();
         if (!Utils.isInService(serviceState)) {
             return;
         }
@@ -536,8 +542,8 @@
         String dataNetworkTypeName = null;
         String voiceNetworkTypeName = null;
         final int subId = mSubscriptionInfo.getSubscriptionId();
-        final int actualDataNetworkType = mTelephonyManager.getDataNetworkType();
-        final int actualVoiceNetworkType = mTelephonyManager.getVoiceNetworkType();
+        final int actualDataNetworkType = getTelephonyManager().getDataNetworkType();
+        final int actualVoiceNetworkType = getTelephonyManager().getVoiceNetworkType();
         final int overrideNetworkType = mTelephonyDisplayInfo == null
                 ? TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE
                 : mTelephonyDisplayInfo.getOverrideNetworkType();
@@ -604,7 +610,7 @@
             mDialog.removeSettingFromScreen(ICCID_INFO_LABEL_ID);
             mDialog.removeSettingFromScreen(ICCID_INFO_VALUE_ID);
         } else {
-            mDialog.setText(ICCID_INFO_VALUE_ID, mTelephonyManager.getSimSerialNumber());
+            mDialog.setText(ICCID_INFO_VALUE_ID, getTelephonyManager().getSimSerialNumber());
         }
     }
 
@@ -617,10 +623,10 @@
     }
 
     @VisibleForTesting
-    protected AtomicReference<String> getEid(int slotIndex) {
+    public AtomicReference<String> getEid(int slotIndex) {
         boolean shouldHaveEid = false;
         String eid = null;
-        if (mTelephonyManager.getActiveModemCount() > MAX_PHONE_COUNT_SINGLE_SIM) {
+        if (getTelephonyManager().getActiveModemCount() > MAX_PHONE_COUNT_SINGLE_SIM) {
             // Get EID per-SIM in multi-SIM mode
             final Map<Integer, Integer> mapping = mTelephonyManager
                     .getLogicalToPhysicalSlotMapping();
@@ -628,7 +634,7 @@
                     SubscriptionManager.INVALID_SIM_SLOT_INDEX);
 
             if (pSlotId != SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
-                final List<UiccCardInfo> infos = mTelephonyManager.getUiccCardsInfo();
+                final List<UiccCardInfo> infos = getTelephonyManager().getUiccCardsInfo();
 
                 for (UiccCardInfo info : infos) {
                     if (info.getPhysicalSlotIndex() == pSlotId) {
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java
index 93323b3..8eb71df 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogFragment.java
@@ -30,6 +30,10 @@
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.deviceinfo.PhoneNumberUtil;
+
+import java.util.Arrays;
+import java.util.stream.IntStream;
 
 public class SimStatusDialogFragment extends InstrumentedDialogFragment {
 
@@ -87,13 +91,26 @@
         }
     }
 
+    /**
+     * View ID(s) which is digit format (instead of decimal number) text.
+     **/
+    private static final int [] sViewIdsInDigitFormat = IntStream
+            .of(SimStatusDialogController.ICCID_INFO_VALUE_ID,
+                    SimStatusDialogController.PHONE_NUMBER_VALUE_ID,
+                    SimStatusDialogController.EID_INFO_VALUE_ID)
+            .sorted().toArray();
+
     public void setText(int viewId, CharSequence text) {
         final TextView textView = mRootView.findViewById(viewId);
+        if (textView == null) {
+            return;
+        }
         if (TextUtils.isEmpty(text)) {
             text = getResources().getString(R.string.device_info_default);
         }
-        if (textView != null) {
-            textView.setText(text);
+        else if (Arrays.binarySearch(sViewIdsInDigitFormat, viewId) >= 0) {
+            text = PhoneNumberUtil.expandByTts(text);
         }
+        textView.setText(text);
     }
 }
diff --git a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
index 627f107..5bfce18 100644
--- a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
@@ -17,6 +17,13 @@
 package com.android.settings.display;
 
 import android.app.settings.SettingsEnums;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import androidx.viewpager.widget.ViewPager;
 
 import com.android.settings.R;
 
@@ -34,6 +41,23 @@
     }
 
     @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        final View root = super.onCreateView(inflater, container, savedInstanceState);
+        if (getResources().getBoolean(R.bool.config_supported_large_screen)) {
+            final ViewPager viewPager = root.findViewById(R.id.preview_pager);
+            final View view = (View) viewPager.getAdapter().instantiateItem(viewPager,
+                    viewPager.getCurrentItem());
+            final LinearLayout layout = view.findViewById(R.id.font_size_preview_text_group);
+            final int paddingStart = getResources().getDimensionPixelSize(
+                    R.dimen.font_size_preview_padding_start);
+            layout.setPaddingRelative(paddingStart, layout.getPaddingTop(),
+                    layout.getPaddingEnd(), layout.getPaddingBottom());
+        }
+        return root;
+    }
+
+    @Override
     public void onStop() {
         // Log the final choice in value if it's different from the previous value.
         if (mCurrentIndex != mInitialIndex) {
diff --git a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
index 7640d08..0136eac 100644
--- a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
+++ b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
@@ -63,6 +63,11 @@
         super.displayPreference(screen);
         Preference preference = screen.findPreference(getPreferenceKey());
         preference.setTitle(getTitle());
+        ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
+                mContext,
+                getComponentName(),
+                null /* secondaryIntentAction */,
+                true /* clearTop */);
     }
 
     public String getTitle() {
@@ -103,11 +108,6 @@
                     mContext)) {
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
             }
-            ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
-                    mContext,
-                    intent.getComponent(),
-                    null /* secondaryIntentAction */,
-                    true /* clearTop */);
             preference.getContext().startActivity(intent);
             return true;
         }
diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
index f86b1ff..7f314d1 100644
--- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
@@ -18,7 +18,6 @@
 
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -32,8 +31,6 @@
 import com.android.settingslib.core.lifecycle.events.OnStop;
 import com.android.settingslib.utils.ThreadUtils;
 
-import java.util.HashMap;
-
 public class TopLevelBatteryPreferenceController extends BasePreferenceController implements
         LifecycleObserver, OnStart, OnStop, BatteryPreferenceController {
 
@@ -43,13 +40,9 @@
     Preference mPreference;
     private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
     private BatteryInfo mBatteryInfo;
-    private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
     private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
     private String mBatteryStatusLabel;
 
-    @VisibleForTesting
-    protected static HashMap<String, ComponentName> sReplacingActivityMap = new HashMap<>();
-
     public TopLevelBatteryPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
         mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
@@ -63,8 +56,6 @@
             }, true /* shortString */);
         });
 
-        mBatterySettingsFeatureProvider = FeatureFactory.getFactory(context)
-                .getBatterySettingsFeatureProvider(context);
         mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context)
                 .getBatteryStatusFeatureProvider(context);
     }
@@ -82,37 +73,6 @@
     }
 
     @Override
-    public boolean handlePreferenceTreeClick(Preference preference) {
-        String prefFrag = preference.getFragment();
-        if (prefFrag == null || prefFrag.isEmpty()) {
-            // Not a redirect, so use the default.
-            return super.handlePreferenceTreeClick(preference);
-        }
-
-        ComponentName currentFragmentName = convertClassPathToComponentName(prefFrag);
-        if (currentFragmentName == null) {
-            return super.handlePreferenceTreeClick(preference);
-        }
-
-        ComponentName replacingActivity;
-        if (sReplacingActivityMap.containsKey(prefFrag)) {
-            replacingActivity = sReplacingActivityMap.get(prefFrag);
-        } else {
-            replacingActivity = mBatterySettingsFeatureProvider.getReplacingActivity(
-                    currentFragmentName);
-            sReplacingActivityMap.put(prefFrag, replacingActivity);
-        }
-
-        if (replacingActivity == null || currentFragmentName.compareTo(replacingActivity) == 0) {
-            return super.handlePreferenceTreeClick(preference);
-        }
-        Intent intent = new Intent();
-        intent.setComponent(replacingActivity);
-        mContext.startActivity(intent);
-        return true;
-    }
-
-    @Override
     public void onStart() {
         mBatteryBroadcastReceiver.register();
     }
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 31cc7aa..183a2fb 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -76,7 +76,7 @@
     public static final String EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA =
             "settings_large_screen_deep_link_intent_data";
 
-    private static final int DEFAULT_HIGHLIGHT_MENU_KEY = R.string.menu_key_network;
+    static final int DEFAULT_HIGHLIGHT_MENU_KEY = R.string.menu_key_network;
     private static final long HOMEPAGE_LOADING_TIMEOUT_MS = 300;
 
     private TopLevelSettings mMainFragment;
@@ -94,6 +94,10 @@
         void onHomepageLoaded();
     }
 
+    private interface FragmentBuilder<T extends Fragment>  {
+        T build();
+    }
+
     /**
      * Try to add a {@link HomepageLoadedListener}. If homepage is already loaded, the listener
      * will not be notified.
@@ -121,11 +125,8 @@
         }
         Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
         final View homepageView = mHomepageView;
-        if (!mIsTwoPaneLastTime) {
-            mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
-        } else {
-            mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
-        }
+        mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
+        mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
         mHomepageView = null;
 
         mLoadedListeners.forEach(listener -> listener.onHomepageLoaded());
@@ -163,18 +164,23 @@
         mCategoryMixin = new CategoryMixin(this);
         getLifecycle().addObserver(mCategoryMixin);
 
+        final String highlightMenuKey = getHighlightMenuKey();
         // Only allow features on high ram devices.
         if (!getSystemService(ActivityManager.class).isLowRamDevice()) {
             initAvatarView();
-            showSuggestionFragment();
+            final boolean scrollNeeded = mIsEmbeddingActivityEnabled
+                    && !TextUtils.equals(getString(DEFAULT_HIGHLIGHT_MENU_KEY), highlightMenuKey);
+            showSuggestionFragment(scrollNeeded);
             if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) {
-                showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content);
+                showFragment(() -> new ContextualCardsFragment(), R.id.contextual_cards_content);
             }
         }
-        mMainFragment = new TopLevelSettings();
-        mMainFragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
-                getHighlightMenuKey());
-        showFragment(mMainFragment, R.id.main_content);
+        mMainFragment = showFragment(() -> {
+            final TopLevelSettings fragment = new TopLevelSettings();
+            fragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
+                    highlightMenuKey);
+            return fragment;
+        }, R.id.main_content);
 
         ((FrameLayout) findViewById(R.id.main_content))
                 .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
@@ -259,47 +265,53 @@
         findViewById(R.id.settings_homepage_container).setBackgroundColor(color);
     }
 
-    private void showSuggestionFragment() {
-        final Class<? extends Fragment> fragment = FeatureFactory.getFactory(this)
+    private void showSuggestionFragment(boolean scrollNeeded) {
+        final Class<? extends Fragment> fragmentClass = FeatureFactory.getFactory(this)
                 .getSuggestionFeatureProvider(this).getContextualSuggestionFragment();
-        if (fragment == null) {
+        if (fragmentClass == null) {
             return;
         }
 
         mSuggestionView = findViewById(R.id.suggestion_content);
         mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content);
         mHomepageView = findViewById(R.id.settings_homepage_container);
-        // Hide the homepage for preparing the suggestion.
-        mHomepageView.setVisibility(View.INVISIBLE);
+        // Hide the homepage for preparing the suggestion. If scrolling is needed, the list views
+        // should be initialized in the invisible homepage view to prevent a scroll flicker.
+        mHomepageView.setVisibility(scrollNeeded ? View.INVISIBLE : View.GONE);
         // Schedule a timer to show the homepage and hide the suggestion on timeout.
         mHomepageView.postDelayed(() -> showHomepageWithSuggestion(false),
                 HOMEPAGE_LOADING_TIMEOUT_MS);
-        try {
-            showFragment(fragment.getConstructor().newInstance(), R.id.suggestion_content);
-            if (mIsEmbeddingActivityEnabled) {
-                showFragment(fragment.getConstructor().newInstance(),
-                        R.id.two_pane_suggestion_content);
+        final FragmentBuilder<?> fragmentBuilder = () -> {
+            try {
+                return fragmentClass.getConstructor().newInstance();
+            } catch (Exception e) {
+                Log.w(TAG, "Cannot show fragment", e);
             }
-        } catch (Exception e) {
-            Log.w(TAG, "Cannot show fragment", e);
+            return null;
+        };
+        showFragment(fragmentBuilder, R.id.suggestion_content);
+        if (mIsEmbeddingActivityEnabled) {
+            showFragment(fragmentBuilder, R.id.two_pane_suggestion_content);
         }
     }
 
-    private void showFragment(Fragment fragment, int id) {
+    private <T extends Fragment> T showFragment(FragmentBuilder<T> fragmentBuilder, int id) {
         final FragmentManager fragmentManager = getSupportFragmentManager();
         final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
-        final Fragment showFragment = fragmentManager.findFragmentById(id);
+        T showFragment = (T) fragmentManager.findFragmentById(id);
 
         if (showFragment == null) {
-            fragmentTransaction.add(id, fragment);
+            showFragment = fragmentBuilder.build();
+            fragmentTransaction.add(id, showFragment);
         } else {
             fragmentTransaction.show(showFragment);
         }
         fragmentTransaction.commit();
+        return showFragment;
     }
 
     private void launchDeepLinkIntentToRight() {
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
+        if (!mIsEmbeddingActivityEnabled) {
             return;
         }
 
@@ -363,14 +375,14 @@
                 targetIntent.getAction(),
                 SplitRule.FINISH_ALWAYS,
                 SplitRule.FINISH_ALWAYS,
-                true /* clearTop*/);
+                true /* clearTop */);
         ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
-                new ComponentName(Settings.class.getPackageName(), Settings.class.getName()),
+                new ComponentName(getApplicationContext(), Settings.class),
                 targetComponentName,
                 targetIntent.getAction(),
                 SplitRule.FINISH_ALWAYS,
                 SplitRule.FINISH_ALWAYS,
-                true /* clearTop*/);
+                true /* clearTop */);
         startActivity(targetIntent);
     }
 
diff --git a/src/com/android/settings/homepage/TopLevelHighlightMixin.java b/src/com/android/settings/homepage/TopLevelHighlightMixin.java
new file mode 100644
index 0000000..ebfe7f2
--- /dev/null
+++ b/src/com/android/settings/homepage/TopLevelHighlightMixin.java
@@ -0,0 +1,189 @@
+/*
+ * 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.settings.homepage;
+
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.widget.HighlightableTopLevelPreferenceAdapter;
+
+/** A highlight mixin for the top level settings fragment. */
+public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnShowListener,
+        DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {
+
+    private static final String TAG = "TopLevelHighlightMixin";
+
+    private String mCurrentKey;
+    // Stores the previous key for the profile select dialog cancel event
+    private String mPreviousKey;
+    // Stores the key hidden for the search page presence
+    private String mHiddenKey;
+    private DialogInterface mDialog;
+    private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter;
+
+    public TopLevelHighlightMixin() {
+    }
+
+    public TopLevelHighlightMixin(Parcel source) {
+        mCurrentKey = source.readString();
+        mPreviousKey = source.readString();
+        mHiddenKey = source.readString();
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(mCurrentKey);
+        dest.writeString(mPreviousKey);
+        dest.writeString(mHiddenKey);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final Creator<TopLevelHighlightMixin> CREATOR = new Creator<>() {
+        @Override
+        public TopLevelHighlightMixin createFromParcel(Parcel source) {
+            return new TopLevelHighlightMixin(source);
+        }
+
+        @Override
+        public TopLevelHighlightMixin[] newArray(int size) {
+            return new TopLevelHighlightMixin[size];
+        }
+    };
+
+    @Override
+    public void onShow(DialogInterface dialog) {
+        mDialog = dialog;
+    }
+
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        mDialog = null;
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        if (mTopLevelAdapter != null) {
+            mCurrentKey = mPreviousKey;
+            mPreviousKey = null;
+            mTopLevelAdapter.highlightPreference(mCurrentKey, /* scrollNeeded= */ false);
+        }
+    }
+
+    RecyclerView.Adapter onCreateAdapter(TopLevelSettings topLevelSettings,
+            PreferenceScreen preferenceScreen) {
+        if (TextUtils.isEmpty(mCurrentKey)) {
+            mCurrentKey = getHighlightPrefKeyFromArguments(topLevelSettings.getArguments());
+        }
+
+        Log.d(TAG, "onCreateAdapter, pref key: " + mCurrentKey);
+        mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
+                (SettingsHomepageActivity) topLevelSettings.getActivity(), preferenceScreen,
+                topLevelSettings.getListView(), mCurrentKey);
+        return mTopLevelAdapter;
+    }
+
+    void reloadHighlightMenuKey(Bundle arguments) {
+        if (mTopLevelAdapter == null) {
+            return;
+        }
+        ensureDialogDismissed();
+
+        mCurrentKey = getHighlightPrefKeyFromArguments(arguments);
+        Log.d(TAG, "reloadHighlightMenuKey, pref key: " + mCurrentKey);
+        mTopLevelAdapter.highlightPreference(mCurrentKey, /* scrollNeeded= */ true);
+    }
+
+    void setHighlightPreferenceKey(String prefKey) {
+        if (mTopLevelAdapter != null) {
+            ensureDialogDismissed();
+            mPreviousKey = mCurrentKey;
+            mCurrentKey = prefKey;
+            mTopLevelAdapter.highlightPreference(prefKey, /* scrollNeeded= */ false);
+        }
+    }
+
+    void highlightPreferenceIfNeeded(FragmentActivity activity) {
+        if (mTopLevelAdapter != null) {
+            mTopLevelAdapter.requestHighlight();
+        }
+    }
+
+    void setMenuHighlightShowed(boolean show) {
+        if (mTopLevelAdapter == null) {
+            return;
+        }
+        ensureDialogDismissed();
+
+        if (show) {
+            mCurrentKey = mHiddenKey;
+            mHiddenKey = null;
+        } else {
+            if (mHiddenKey == null) {
+                mHiddenKey = mCurrentKey;
+            }
+            mCurrentKey = null;
+        }
+        mTopLevelAdapter.highlightPreference(mCurrentKey, /* scrollNeeded= */ show);
+    }
+
+    void setHighlightMenuKey(String menuKey, boolean scrollNeeded) {
+        if (mTopLevelAdapter == null) {
+            return;
+        }
+        ensureDialogDismissed();
+
+        final String prefKey = HighlightableMenu.lookupPreferenceKey(menuKey);
+        if (TextUtils.isEmpty(prefKey)) {
+            Log.e(TAG, "Invalid highlight menu key: " + menuKey);
+        } else {
+            Log.d(TAG, "Menu key: " + menuKey);
+            mCurrentKey = prefKey;
+            mTopLevelAdapter.highlightPreference(prefKey, scrollNeeded);
+        }
+    }
+
+    private static String getHighlightPrefKeyFromArguments(Bundle arguments) {
+        final String menuKey = arguments.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY);
+        final String prefKey = HighlightableMenu.lookupPreferenceKey(menuKey);
+        if (TextUtils.isEmpty(prefKey)) {
+            Log.e(TAG, "Invalid highlight menu key: " + menuKey);
+        } else {
+            Log.d(TAG, "Menu key: " + menuKey);
+        }
+        return prefKey;
+    }
+
+    private void ensureDialogDismissed() {
+        if (mDialog != null) {
+            onCancel(mDialog);
+            mDialog.dismiss();
+        }
+    }
+}
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index eb1a066..f76a3de 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -19,6 +19,7 @@
 import static com.android.settings.search.actionbar.SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR;
 import static com.android.settingslib.search.SearchIndexable.MOBILE;
 
+import android.app.ActivityManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -34,7 +35,6 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.R;
-import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
 import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
 import com.android.settings.activityembedding.ActivityEmbeddingUtils;
@@ -42,7 +42,6 @@
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.support.SupportPreferenceController;
-import com.android.settings.widget.HighlightableTopLevelPreferenceAdapter;
 import com.android.settings.widget.HomepagePreference;
 import com.android.settingslib.core.instrumentation.Instrumentable;
 import com.android.settingslib.drawer.Tile;
@@ -53,13 +52,12 @@
         PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
 
     private static final String TAG = "TopLevelSettings";
-    private static final String SAVED_HIGHLIGHTED_PREF = "highlighted_pref";
-    private static final String SAVED_CACHED_PREF = "cached_pref";
+    private static final String SAVED_HIGHLIGHT_MIXIN = "highlight_mixin";
+    private static final String PREF_KEY_SUPPORT = "top_level_support";
 
-    private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter;
-
-    private String mHighlightedPreferenceKey;
-    private String mCachedPreferenceKey;
+    private boolean mIsEmbeddingActivityEnabled;
+    private TopLevelHighlightMixin mHighlightMixin;
+    private boolean mFirstStarted = true;
 
     public TopLevelSettings() {
         final Bundle args = new Bundle();
@@ -127,17 +125,47 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        if (icicle != null) {
-            mHighlightedPreferenceKey = icicle.getString(SAVED_HIGHLIGHTED_PREF);
-            mCachedPreferenceKey = icicle.getString(SAVED_CACHED_PREF);
+        mIsEmbeddingActivityEnabled =
+                ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext());
+        if (!mIsEmbeddingActivityEnabled) {
+            return;
         }
+
+        if (icicle != null) {
+            mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN);
+        }
+        if (mHighlightMixin == null) {
+            mHighlightMixin = new TopLevelHighlightMixin();
+        }
+    }
+
+    @Override
+    public void onStart() {
+        if (mFirstStarted) {
+            mFirstStarted = false;
+        } else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask()
+                && !ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) {
+            // Set default highlight menu key for 1-pane homepage since it will show the placeholder
+            // page once changing back to 2-pane.
+            Log.i(TAG, "Set default menu key");
+            setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY),
+                    /* scrollNeeded= */ false);
+        }
+        super.onStart();
+    }
+
+    private boolean isOnlyOneActivityInTask() {
+        final ActivityManager.RunningTaskInfo taskInfo = getSystemService(ActivityManager.class)
+                .getRunningTasks(1).get(0);
+        return taskInfo.numActivities == 1;
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-        outState.putString(SAVED_HIGHLIGHTED_PREF, mHighlightedPreferenceKey);
-        outState.putString(SAVED_CACHED_PREF, mCachedPreferenceKey);
+        if (mHighlightMixin != null) {
+            outState.putParcelable(SAVED_HIGHLIGHT_MIXIN, mHighlightMixin);
+        }
     }
 
     @Override
@@ -170,58 +198,35 @@
 
     @Override
     public void highlightPreferenceIfNeeded() {
-        if (mTopLevelAdapter != null) {
-            mTopLevelAdapter.requestHighlight();
+        if (mHighlightMixin != null) {
+            mHighlightMixin.highlightPreferenceIfNeeded(getActivity());
         }
     }
 
+    /** Returns a {@link TopLevelHighlightMixin} that performs highlighting */
+    public TopLevelHighlightMixin getHighlightMixin() {
+        return mHighlightMixin;
+    }
+
     /** Highlight a preference with specified preference key */
     public void setHighlightPreferenceKey(String prefKey) {
-        if (mTopLevelAdapter != null) {
-            mCachedPreferenceKey = null;
-            mHighlightedPreferenceKey = prefKey;
-            mTopLevelAdapter.highlightPreference(prefKey, /* scrollNeeded= */ false);
+        // Skip Tips & support since it's full screen
+        if (mHighlightMixin != null && !TextUtils.equals(prefKey, PREF_KEY_SUPPORT)) {
+            mHighlightMixin.setHighlightPreferenceKey(prefKey);
         }
     }
 
-    /** Highlight the previous preference */
-    public void restorePreviousHighlight() {
-        if (mTopLevelAdapter != null) {
-            mTopLevelAdapter.restorePreviousHighlight();
-        }
-    }
-
-    /** Show/hide the highlight on the menu entry */
+    /** Show/hide the highlight on the menu entry for the search page presence */
     public void setMenuHighlightShowed(boolean show) {
-        if (mTopLevelAdapter == null) {
-            return;
+        if (mHighlightMixin != null) {
+            mHighlightMixin.setMenuHighlightShowed(show);
         }
-
-        if (show) {
-            mHighlightedPreferenceKey = mCachedPreferenceKey;
-            mCachedPreferenceKey = null;
-        } else {
-            if (mCachedPreferenceKey == null) {
-                mCachedPreferenceKey = mHighlightedPreferenceKey;
-            }
-            mHighlightedPreferenceKey = null;
-        }
-        mTopLevelAdapter.highlightPreference(mHighlightedPreferenceKey, /* scrollNeeded= */ show);
     }
 
     /** Highlight and scroll to a preference with specified menu key */
-    public void setHighlightMenuKey(String menuKey) {
-        if (mTopLevelAdapter == null) {
-            return;
-        }
-
-        final String prefKey = HighlightableMenu.lookupPreferenceKey(menuKey);
-        if (TextUtils.isEmpty(prefKey)) {
-            Log.e(TAG, "Invalid highlight menu key: " + menuKey);
-        } else {
-            Log.d(TAG, "Menu key: " + menuKey);
-            mHighlightedPreferenceKey = prefKey;
-            mTopLevelAdapter.highlightPreference(prefKey, /* scrollNeeded= */ true);
+    public void setHighlightMenuKey(String menuKey, boolean scrollNeeded) {
+        if (mHighlightMixin != null) {
+            mHighlightMixin.setHighlightMenuKey(menuKey, scrollNeeded);
         }
     }
 
@@ -233,20 +238,10 @@
 
     @Override
     protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())
-                || !(getActivity() instanceof SettingsHomepageActivity)) {
+        if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
             return super.onCreateAdapter(preferenceScreen);
         }
-
-        if (TextUtils.isEmpty(mHighlightedPreferenceKey)) {
-            mHighlightedPreferenceKey = getHighlightPrefKeyFromArguments();
-        }
-
-        Log.d(TAG, "onCreateAdapter, pref key: " + mHighlightedPreferenceKey);
-        mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
-                (SettingsHomepageActivity) getActivity(), preferenceScreen, getListView(),
-                mHighlightedPreferenceKey);
-        return mTopLevelAdapter;
+        return mHighlightMixin.onCreateAdapter(this, preferenceScreen);
     }
 
     @Override
@@ -255,25 +250,9 @@
     }
 
     void reloadHighlightMenuKey() {
-        if (mTopLevelAdapter == null) {
-            return;
+        if (mHighlightMixin != null) {
+            mHighlightMixin.reloadHighlightMenuKey(getArguments());
         }
-
-        mHighlightedPreferenceKey = getHighlightPrefKeyFromArguments();
-        Log.d(TAG, "reloadHighlightMenuKey, pref key: " + mHighlightedPreferenceKey);
-        mTopLevelAdapter.highlightPreference(mHighlightedPreferenceKey, /* scrollNeeded= */ true);
-    }
-
-    private String getHighlightPrefKeyFromArguments() {
-        final Bundle arguments = getArguments();
-        final String menuKey = arguments.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY);
-        final String prefKey = HighlightableMenu.lookupPreferenceKey(menuKey);
-        if (TextUtils.isEmpty(prefKey)) {
-            Log.e(TAG, "Invalid highlight menu key: " + menuKey);
-        } else {
-            Log.d(TAG, "Menu key: " + menuKey);
-        }
-        return prefKey;
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/network/MobileNetworkListController.java b/src/com/android/settings/network/MobileNetworkListController.java
index d7fc8b4..fd40c8f 100644
--- a/src/com/android/settings/network/MobileNetworkListController.java
+++ b/src/com/android/settings/network/MobileNetworkListController.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.network;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+
 import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE;
 import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
 
@@ -34,7 +36,6 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
-import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 
@@ -137,7 +138,8 @@
                         && !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
                     SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true);
                 } else {
-                    final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
+                    final Intent intent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
+                    intent.setPackage(SETTINGS_PACKAGE_NAME);
                     intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
                     mContext.startActivity(intent);
                 }
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 527a632..b49613a 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -18,6 +18,8 @@
 import static android.os.UserHandle.myUserId;
 import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+
 import static androidx.lifecycle.Lifecycle.Event;
 
 import android.content.BroadcastReceiver;
@@ -38,7 +40,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.RestrictedPreference;
@@ -146,7 +147,8 @@
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) {
-            final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
+            final Intent intent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
+            intent.setPackage(SETTINGS_PACKAGE_NAME);
             mContext.startActivity(intent);
             return true;
         }
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index 94d1ff5..1a85a7f 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -36,7 +36,7 @@
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.network.helper.SubscriptionAnnotation;
-import com.android.settings.network.telephony.MobileNetworkActivity;
+import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.AddPreference;
 import com.android.settingslib.Utils;
@@ -190,12 +190,8 @@
                 SubscriptionAnnotation info = subs.get(0);
                 if (info.getSubInfo().isEmbedded() || info.isActive()
                         || mStatusCache.isPhysicalSimDisableSupport()) {
-                    final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                    intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
-                    // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-                    MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent,
-                            null);
-                    mContext.startActivity(intent);
+                    MobileNetworkUtils.launchMobileNetworkSettings(mContext,
+                            info.getSubInfo());
                     return true;
                 }
 
diff --git a/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java b/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java
deleted file mode 100644
index 8b3503e..0000000
--- a/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.android.settings.network;
-
-import android.annotation.Nullable;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
-
-public class MobileNetworkTwoPaneUtils {
-
-    private static final String TAG = "MobileNetworkTwoPaneUtils";
-
-    /**
-     * TODO: b/206061070, the problem of multi-instance should be fixed in Android T to apply the
-     * Settings' architecture and 2 panes mode instead of registering the rule.
-     *
-     * The launchMode of MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-     */
-    public static void registerTwoPaneForMobileNetwork(Context context, Intent intent,
-            @Nullable String secondaryIntentAction) {
-        Log.d(TAG, "registerTwoPaneForMobileNetwork");
-        ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
-                context,
-                intent.getComponent(),
-                secondaryIntentAction /* secondaryIntentAction */,
-                false /* clearTop */);
-    }
-}
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index c762197..286e4e3 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -118,9 +118,7 @@
             controllers.add(internetPreferenceController);
         }
         controllers.add(privateDnsPreferenceController);
-        if (Utils.isProviderModelEnabled(context)) {
-            controllers.add(new NetworkProviderCallsSmsController(context, lifecycle));
-        }
+        controllers.add(new NetworkProviderCallsSmsController(context, lifecycle));
         return controllers;
     }
 
@@ -155,20 +153,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.network_and_internet) {
-
-                @Override
-                // TODO(b/167474581): Should remove this method when Provider Model finished.
-                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                        boolean enabled) {
-                    if (Utils.isProviderModelEnabled(context)) {
-                        final SearchIndexableResource sir = new SearchIndexableResource(context);
-                        sir.xmlResId = R.xml.network_provider_internet;
-                        return Arrays.asList(sir);
-                    }
-                    return super.getXmlResourcesToIndex(context, enabled);
-                }
-
+            new BaseSearchIndexProvider(R.xml.network_provider_internet) {
                 @Override
                 public List<AbstractPreferenceController> createPreferenceControllers(Context
                         context) {
diff --git a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
index 1bb50cb..48cd8aa 100644
--- a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
@@ -36,7 +36,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -128,11 +127,7 @@
             pref.setSummary(getSummary(subId));
 
             pref.setOnPreferenceClickListener(clickedPref -> {
-                final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
-                // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-                MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent, null);
-                mContext.startActivity(intent);
+                MobileNetworkUtils.launchMobileNetworkSettings(mContext, info);
                 return true;
             });
             mPreferences.put(subId, pref);
diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java
index d6eaab8..77d665a 100644
--- a/src/com/android/settings/network/NetworkProviderSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderSimListController.java
@@ -36,7 +36,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.network.telephony.MobileNetworkActivity;
+import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -126,12 +126,7 @@
                     SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId,
                             true);
                 } else {
-                    final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                    intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
-                    // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-                    MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent,
-                            null);
-                    mContext.startActivity(intent);
+                    MobileNetworkUtils.launchMobileNetworkSettings(mContext, info);
                 }
                 return true;
             });
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index c77a294..1ba0502 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -24,6 +24,7 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.os.ParcelUuid;
+import android.provider.Settings;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
@@ -37,6 +38,8 @@
 
 import com.android.internal.telephony.MccTable;
 import com.android.settings.R;
+import com.android.settings.network.helper.SelectableSubscriptions;
+import com.android.settings.network.helper.SubscriptionAnnotation;
 import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
 import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
 import com.android.settingslib.DeviceInfoUtils;
@@ -48,6 +51,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -540,13 +544,14 @@
             return null;
         }
 
-        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
-        String rawPhoneNumber =
-                telephonyManager.getLine1Number(subscriptionInfo.getSubscriptionId());
-        String countryIso = MccTable.countryCodeForMcc(subscriptionInfo.getMccString());
+        final SubscriptionManager subscriptionManager = context.getSystemService(
+                SubscriptionManager.class);
+        String rawPhoneNumber = subscriptionManager.getPhoneNumber(
+                subscriptionInfo.getSubscriptionId());
         if (TextUtils.isEmpty(rawPhoneNumber)) {
             return null;
         }
+        String countryIso = MccTable.countryCodeForMcc(subscriptionInfo.getMccString());
         return PhoneNumberUtils.formatNumber(rawPhoneNumber, countryIso);
     }
 
@@ -642,4 +647,49 @@
     private static int getDefaultDataSubscriptionId() {
         return SubscriptionManager.getDefaultDataSubscriptionId();
     }
+
+
+    /**
+     * Select one of the subscription as the default subscription.
+     * @param subAnnoList a list of {@link SubscriptionAnnotation}
+     * @return ideally the {@link SubscriptionAnnotation} as expected
+     */
+    private static SubscriptionAnnotation getDefaultSubscriptionSelection(
+            List<SubscriptionAnnotation> subAnnoList) {
+        return (subAnnoList == null) ? null :
+                subAnnoList.stream()
+                        .filter(SubscriptionAnnotation::isDisplayAllowed)
+                        .filter(SubscriptionAnnotation::isActive)
+                        .findFirst().orElse(null);
+    }
+
+    public static SubscriptionInfo getSubscriptionOrDefault(Context context, int subscriptionId) {
+        return getSubscription(context, subscriptionId,
+                (subscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) ? null : (
+                        subAnnoList -> getDefaultSubscriptionSelection(subAnnoList)
+                ));
+    }
+
+    /**
+     * Get the current subscription to display. First check whether intent has {@link
+     * Settings#EXTRA_SUB_ID} and if so find the subscription with that id.
+     * If not, select default one based on {@link Function} provided.
+     *
+     * @param preferredSubscriptionId preferred subscription id
+     * @param selectionOfDefault when true current subscription is absent
+     */
+    private static SubscriptionInfo getSubscription(Context context, int preferredSubscriptionId,
+            Function<List<SubscriptionAnnotation>, SubscriptionAnnotation> selectionOfDefault) {
+        List<SubscriptionAnnotation> subList =
+                (new SelectableSubscriptions(context, true)).call();
+        Log.d(TAG, "get subId=" + preferredSubscriptionId + " from " + subList);
+        SubscriptionAnnotation currentSubInfo = subList.stream()
+                .filter(SubscriptionAnnotation::isDisplayAllowed)
+                .filter(subAnno -> (subAnno.getSubscriptionId() == preferredSubscriptionId))
+                .findFirst().orElse(null);
+        if ((currentSubInfo == null) && (selectionOfDefault != null)) {
+            currentSubInfo = selectionOfDefault.apply(subList);
+        }
+        return (currentSubInfo == null) ? null : currentSubInfo.getSubInfo();
+    }
 }
diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java
index 9e1b6da..87c4697 100644
--- a/src/com/android/settings/network/SubscriptionsPreferenceController.java
+++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java
@@ -55,7 +55,6 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.network.telephony.DataConnectivityListener;
-import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.network.telephony.SignalStrengthListener;
 import com.android.settings.network.telephony.TelephonyDisplayInfoListener;
@@ -237,7 +236,7 @@
             });
 
             mSubsGearPref.setOnGearClickListener(p ->
-                    startMobileNetworkActivity(mContext, subInfo.getSubscriptionId()));
+                    MobileNetworkUtils.launchMobileNetworkSettings(mContext, subInfo));
         }
 
         if (!(mContext.getSystemService(UserManager.class)).isAdminUser()) {
@@ -316,7 +315,7 @@
                 : (serviceState.getState() == ServiceState.STATE_IN_SERVICE);
         if (isDataInService || isVoiceInService || isCarrierNetworkActive) {
             icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels,
-                    !mTelephonyManager.isDataEnabled());
+                    !tmForSubId.isDataEnabled());
         }
 
         final boolean isActiveCellularNetwork =
@@ -335,14 +334,6 @@
         mSubsGearPref.setSummary("");
     }
 
-    private static void startMobileNetworkActivity(Context context, int subId) {
-        final Intent intent = new Intent(context, MobileNetworkActivity.class);
-        intent.putExtra(Settings.EXTRA_SUB_ID, subId);
-        // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-        MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(context, intent, null);
-        context.startActivity(intent);
-    }
-
     @VisibleForTesting
     boolean shouldInflateSignalStrength(int subId) {
         return SignalStrengthUtil.shouldInflateSignalStrength(mContext, subId);
diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
index 1ac121e..69951bf 100644
--- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
+++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
@@ -122,6 +122,7 @@
 
     @Override
     public boolean isChecked() {
+        mTelephonyManager = getTelephonyManager();
         return mTelephonyManager.isDataEnabled();
     }
 
@@ -152,8 +153,21 @@
     public void init(FragmentManager fragmentManager, int subId) {
         mFragmentManager = fragmentManager;
         mSubId = subId;
-        mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
-                .createForSubscriptionId(mSubId);
+        mTelephonyManager = null;
+        mTelephonyManager = getTelephonyManager();
+    }
+
+    private TelephonyManager getTelephonyManager() {
+        if (mTelephonyManager != null) {
+            return mTelephonyManager;
+        }
+        TelephonyManager telMgr =
+                mContext.getSystemService(TelephonyManager.class);
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            telMgr = telMgr.createForSubscriptionId(mSubId);
+        }
+        mTelephonyManager = telMgr;
+        return telMgr;
     }
 
     public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) {
@@ -163,6 +177,7 @@
     @VisibleForTesting
     boolean isDialogNeeded() {
         final boolean enableData = !isChecked();
+        mTelephonyManager = getTelephonyManager();
         final boolean isMultiSim = (mTelephonyManager.getActiveModemCount() > 1);
         final int defaultSubId = mSubscriptionManager.getDefaultDataSubscriptionId();
         final boolean needToDisableOthers = mSubscriptionManager
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index 22bb581..d25ae65 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -18,6 +18,8 @@
 
 import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+
 import android.annotation.ColorInt;
 import android.app.PendingIntent;
 import android.content.Context;
@@ -27,6 +29,7 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
+import android.provider.Settings;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -142,7 +145,8 @@
 
     @Override
     public Intent getIntent() {
-        return new Intent(mContext, MobileNetworkActivity.class);
+        return new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS).setPackage(
+                SETTINGS_PACKAGE_NAME);
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
deleted file mode 100644
index bbff57d..0000000
--- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java
+++ /dev/null
@@ -1,433 +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.settings.network.telephony;
-
-import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY;
-
-import android.app.ActionBar;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.ims.ImsRcsManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.Toolbar;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-import androidx.lifecycle.Lifecycle;
-
-import com.android.settings.R;
-import com.android.settings.core.SettingsBaseActivity;
-import com.android.settings.network.ProxySubscriptionManager;
-import com.android.settings.network.SubscriptionUtil;
-import com.android.settings.network.helper.SelectableSubscriptions;
-import com.android.settings.network.helper.SubscriptionAnnotation;
-
-import java.util.List;
-import java.util.function.Function;
-
-/**
- * Activity for displaying MobileNetworkSettings
- */
-public class MobileNetworkActivity extends SettingsBaseActivity
-        implements ProxySubscriptionManager.OnActiveSubscriptionChangedListener {
-
-    private static final String TAG = "MobileNetworkActivity";
-    @VisibleForTesting
-    static final String MOBILE_SETTINGS_TAG = "mobile_settings:";
-    @VisibleForTesting
-    static final int SUB_ID_NULL = Integer.MIN_VALUE;
-
-    @VisibleForTesting
-    ProxySubscriptionManager mProxySubscriptionMgr;
-
-    private int mCurSubscriptionId = SUB_ID_NULL;
-
-    // This flag forces subscription information fragment to be re-created.
-    // Otherwise, fragment will be kept when subscription id has not been changed.
-    //
-    // Set initial value to true allows subscription information fragment to be re-created when
-    // Activity re-create occur.
-    private boolean mPendingSubscriptionChange = true;
-
-    @Override
-    protected void onNewIntent(Intent intent) {
-        super.onNewIntent(intent);
-        validate(intent);
-        setIntent(intent);
-
-        int updateSubscriptionIndex = mCurSubscriptionId;
-        if (intent != null) {
-            updateSubscriptionIndex = intent.getIntExtra(Settings.EXTRA_SUB_ID, SUB_ID_NULL);
-        }
-        SubscriptionInfo info = getSubscriptionOrDefault(updateSubscriptionIndex);
-        if (info == null) {
-            Log.d(TAG, "Invalid subId request " + mCurSubscriptionId
-                    + " -> " + updateSubscriptionIndex);
-            return;
-        }
-
-        int oldSubId = mCurSubscriptionId;
-        updateSubscriptions(info, null);
-
-        // If the subscription has changed or the new intent doesnt contain the opt in action,
-        // remove the old discovery dialog. If the activity is being recreated, we will see
-        // onCreate -> onNewIntent, so the dialog will first be recreated for the old subscription
-        // and then removed.
-        if (mCurSubscriptionId != oldSubId || !doesIntentContainOptInAction(intent)) {
-            removeContactDiscoveryDialog(oldSubId);
-        }
-        // evaluate showing the new discovery dialog if this intent contains an action to show the
-        // opt-in.
-        if (doesIntentContainOptInAction(intent)) {
-            maybeShowContactDiscoveryDialog(info);
-        }
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        final UserManager userManager = this.getSystemService(UserManager.class);
-        if (!userManager.isAdminUser()) {
-            this.finish();
-            return;
-        }
-
-        final Toolbar toolbar = findViewById(R.id.action_bar);
-        toolbar.setVisibility(View.VISIBLE);
-        setActionBar(toolbar);
-
-        final ActionBar actionBar = getActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-            actionBar.setDisplayShowTitleEnabled(true);
-        }
-
-        getProxySubscriptionManager().setLifecycle(getLifecycle());
-
-        final Intent startIntent = getIntent();
-        validate(startIntent);
-        mCurSubscriptionId = savedInstanceState != null
-                ? savedInstanceState.getInt(Settings.EXTRA_SUB_ID, SUB_ID_NULL)
-                : ((startIntent != null)
-                ? startIntent.getIntExtra(Settings.EXTRA_SUB_ID, SUB_ID_NULL)
-                : SUB_ID_NULL);
-        // perform registration after mCurSubscriptionId been configured.
-        registerActiveSubscriptionsListener();
-
-        SubscriptionInfo subscription = getSubscriptionOrDefault(mCurSubscriptionId);
-        if (subscription == null) {
-            Log.d(TAG, "Invalid subId request " + mCurSubscriptionId);
-            tryToFinishActivity();
-            return;
-        }
-
-        maybeShowContactDiscoveryDialog(subscription);
-
-        updateSubscriptions(subscription, null);
-    }
-
-    @VisibleForTesting
-    ProxySubscriptionManager getProxySubscriptionManager() {
-        if (mProxySubscriptionMgr == null) {
-            mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
-        }
-        return mProxySubscriptionMgr;
-    }
-
-    @VisibleForTesting
-    void registerActiveSubscriptionsListener() {
-        getProxySubscriptionManager().addActiveSubscriptionsListener(this);
-    }
-
-    /**
-     * Implementation of ProxySubscriptionManager.OnActiveSubscriptionChangedListener
-     */
-    public void onChanged() {
-        mPendingSubscriptionChange = false;
-
-        if (mCurSubscriptionId == SUB_ID_NULL) {
-            return;
-        }
-
-        if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
-            mPendingSubscriptionChange = true;
-            return;
-        }
-
-        SubscriptionInfo subInfo = getSubscription(mCurSubscriptionId, null);
-        if (subInfo != null) {
-            if (mCurSubscriptionId != subInfo.getSubscriptionId()) {
-                // update based on subscription status change
-                removeContactDiscoveryDialog(mCurSubscriptionId);
-                updateSubscriptions(subInfo, null);
-            }
-            return;
-        }
-
-        Log.w(TAG, "subId missing: " + mCurSubscriptionId);
-
-        // When UI is not the active one, avoid from destroy it immediately
-        // but wait until onResume() to see if subscription back online again.
-        // This is to avoid from glitch behavior of subscription which changes
-        // the UI when UI is considered as in the background or only partly
-        // visible.
-        if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
-            mPendingSubscriptionChange = true;
-            return;
-        }
-
-        // Subscription could be missing
-        tryToFinishActivity();
-    }
-
-    protected void runSubscriptionUpdate(Runnable onUpdateRemaining) {
-        SubscriptionInfo subInfo = getSubscription(mCurSubscriptionId, null);
-        if (subInfo == null) {
-            onUpdateRemaining.run();
-            tryToFinishActivity();
-            return;
-        }
-        if (mCurSubscriptionId != subInfo.getSubscriptionId()) {
-            removeContactDiscoveryDialog(mCurSubscriptionId);
-            updateSubscriptions(subInfo, null);
-        }
-        onUpdateRemaining.run();
-    }
-
-    protected void tryToFinishActivity() {
-        if ((!isFinishing()) && (!isDestroyed())) {
-            finish();
-        }
-    }
-
-    @Override
-    protected void onStart() {
-        getProxySubscriptionManager().setLifecycle(getLifecycle());
-        if (mPendingSubscriptionChange) {
-            mPendingSubscriptionChange = false;
-            runSubscriptionUpdate(() -> super.onStart());
-            return;
-        }
-        super.onStart();
-    }
-
-    @Override
-    protected void onResume() {
-        if (mPendingSubscriptionChange) {
-            mPendingSubscriptionChange = false;
-            runSubscriptionUpdate(() -> super.onResume());
-            return;
-        }
-        super.onResume();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        if (mProxySubscriptionMgr == null) {
-            return;
-        }
-        mProxySubscriptionMgr.removeActiveSubscriptionsListener(this);
-    }
-
-    @Override
-    protected void onSaveInstanceState(@NonNull Bundle outState) {
-        super.onSaveInstanceState(outState);
-        saveInstanceState(outState);
-    }
-
-    @VisibleForTesting
-    void saveInstanceState(@NonNull Bundle outState) {
-        outState.putInt(Settings.EXTRA_SUB_ID, mCurSubscriptionId);
-    }
-
-    private void updateTitleAndNavigation(SubscriptionInfo subscription) {
-        // Set the title to the name of the subscription. If we don't have subscription info, the
-        // title will just default to the label for this activity that's already specified in
-        // AndroidManifest.xml.
-        if (subscription != null) {
-            setTitle(SubscriptionUtil.getUniqueSubscriptionDisplayName(subscription, this));
-        }
-    }
-
-    @VisibleForTesting
-    void updateSubscriptions(SubscriptionInfo subscription, Bundle savedInstanceState) {
-        if (subscription == null) {
-            return;
-        }
-        final int subscriptionIndex = subscription.getSubscriptionId();
-
-        updateTitleAndNavigation(subscription);
-        if (savedInstanceState == null) {
-            switchFragment(subscription);
-        }
-
-        mCurSubscriptionId = subscriptionIndex;
-    }
-
-    /**
-     * Select one of the subscription as the default subscription.
-     * @param subAnnoList a list of {@link SubscriptionAnnotation}
-     * @return ideally the {@link SubscriptionAnnotation} as expected
-     */
-    protected SubscriptionAnnotation defaultSubscriptionSelection(
-            List<SubscriptionAnnotation> subAnnoList) {
-        return (subAnnoList == null) ? null :
-                subAnnoList.stream()
-                .filter(SubscriptionAnnotation::isDisplayAllowed)
-                .filter(SubscriptionAnnotation::isActive)
-                .findFirst().orElse(null);
-    }
-
-    protected SubscriptionInfo getSubscriptionOrDefault(int subscriptionId) {
-        return getSubscription(subscriptionId,
-                (subscriptionId != SUB_ID_NULL) ? null : (
-                    subAnnoList -> defaultSubscriptionSelection(subAnnoList)
-                ));
-    }
-
-    /**
-     * Get the current subscription to display. First check whether intent has {@link
-     * Settings#EXTRA_SUB_ID} and if so find the subscription with that id.
-     * If not, select default one based on {@link Function} provided.
-     *
-     * @param preferredSubscriptionId preferred subscription id
-     * @param selectionOfDefault when true current subscription is absent
-     */
-    @VisibleForTesting
-    protected SubscriptionInfo getSubscription(int preferredSubscriptionId,
-            Function<List<SubscriptionAnnotation>, SubscriptionAnnotation> selectionOfDefault) {
-        List<SubscriptionAnnotation> subList =
-                (new SelectableSubscriptions(this, true)).call();
-        Log.d(TAG, "get subId=" + preferredSubscriptionId + " from " + subList);
-        SubscriptionAnnotation currentSubInfo = subList.stream()
-                .filter(SubscriptionAnnotation::isDisplayAllowed)
-                .filter(subAnno -> (subAnno.getSubscriptionId() == preferredSubscriptionId))
-                .findFirst().orElse(null);
-        if ((currentSubInfo == null) && (selectionOfDefault != null)) {
-            currentSubInfo = selectionOfDefault.apply(subList);
-        }
-        return (currentSubInfo == null) ? null : currentSubInfo.getSubInfo();
-    }
-
-    @VisibleForTesting
-    SubscriptionInfo getSubscriptionForSubId(int subId) {
-        return SubscriptionUtil.getAvailableSubscription(this,
-                getProxySubscriptionManager(), subId);
-    }
-
-    @VisibleForTesting
-    void switchFragment(SubscriptionInfo subInfo) {
-        final FragmentManager fragmentManager = getSupportFragmentManager();
-        final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
-
-        final int subId = subInfo.getSubscriptionId();
-        final Intent intent = getIntent();
-        final Bundle bundle = new Bundle();
-        bundle.putInt(Settings.EXTRA_SUB_ID, subId);
-        if (intent != null && Settings.ACTION_MMS_MESSAGE_SETTING.equals(intent.getAction())) {
-            // highlight "mms_message" preference.
-            bundle.putString(EXTRA_FRAGMENT_ARG_KEY, "mms_message");
-        }
-
-        final String fragmentTag = buildFragmentTag(subId);
-        if (fragmentManager.findFragmentByTag(fragmentTag) != null) {
-            Log.d(TAG, "Construct fragment: " + fragmentTag);
-        }
-
-        final Fragment fragment = new MobileNetworkSettings();
-        fragment.setArguments(bundle);
-        fragmentTransaction.replace(R.id.content_frame, fragment, fragmentTag);
-        fragmentTransaction.commitAllowingStateLoss();
-    }
-
-    private void removeContactDiscoveryDialog(int subId) {
-        ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(subId);
-        if (fragment != null) {
-            fragment.dismiss();
-        }
-    }
-
-    private ContactDiscoveryDialogFragment getContactDiscoveryFragment(int subId) {
-        // In the case that we are rebuilding this activity after it has been destroyed and
-        // recreated, look up the dialog in the fragment manager.
-        return (ContactDiscoveryDialogFragment) getSupportFragmentManager()
-                .findFragmentByTag(ContactDiscoveryDialogFragment.getFragmentTag(subId));
-    }
-
-    private void maybeShowContactDiscoveryDialog(SubscriptionInfo info) {
-        int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-        CharSequence carrierName = "";
-        if (info != null) {
-            subId = info.getSubscriptionId();
-            carrierName = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, this);
-        }
-        // If this activity was launched using ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN, show the
-        // associated dialog only if the opt-in has not been granted yet.
-        boolean showOptInDialog = doesIntentContainOptInAction(getIntent())
-                // has the carrier config enabled capability discovery?
-                && MobileNetworkUtils.isContactDiscoveryVisible(this, subId)
-                // has the user already enabled this configuration?
-                && !MobileNetworkUtils.isContactDiscoveryEnabled(this, subId);
-        ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(subId);
-        if (showOptInDialog) {
-            if (fragment == null) {
-                fragment = ContactDiscoveryDialogFragment.newInstance(subId, carrierName);
-            }
-            // Only try to show the dialog if it has not already been added, otherwise we may
-            // accidentally add it multiple times, causing multiple dialogs.
-            if (!fragment.isAdded()) {
-                fragment.show(getSupportFragmentManager(),
-                        ContactDiscoveryDialogFragment.getFragmentTag(subId));
-            }
-        }
-    }
-
-    private boolean doesIntentContainOptInAction(Intent intent) {
-        String intentAction = (intent != null ? intent.getAction() : null);
-        return TextUtils.equals(intentAction,
-                ImsRcsManager.ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN);
-    }
-
-    private void validate(Intent intent) {
-        // Do not allow ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN without a subscription id specified,
-        // since we do not want the user to accidentally turn on capability polling for the wrong
-        // subscription.
-        if (doesIntentContainOptInAction(intent)) {
-            if (SUB_ID_NULL == intent.getIntExtra(Settings.EXTRA_SUB_ID, SUB_ID_NULL)) {
-                throw new IllegalArgumentException("Intent with action "
-                        + "SHOW_CAPABILITY_DISCOVERY_OPT_IN must also include the extra "
-                        + "Settings#EXTRA_SUB_ID");
-            }
-        }
-    }
-
-    @VisibleForTesting
-    String buildFragmentTag(int subscriptionId) {
-        return MOBILE_SETTINGS_TAG + subscriptionId;
-    }
-}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index ba80a8c..f1a4018 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -23,6 +23,7 @@
 import android.os.Bundle;
 import android.os.UserManager;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
@@ -35,10 +36,12 @@
 import androidx.preference.Preference;
 
 import com.android.settings.R;
+import com.android.settings.Settings.MobileNetworkActivity;
 import com.android.settings.datausage.BillingCyclePreferenceController;
 import com.android.settings.datausage.DataUsageSummaryPreferenceController;
 import com.android.settings.network.ActiveSubscriptionsListener;
 import com.android.settings.network.CarrierWifiTogglePreferenceController;
+import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController;
 import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController;
 import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController;
@@ -115,9 +118,16 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
-                MobileNetworkUtils.getSearchableSubscriptionId(context));
-        Log.i(LOG_TAG, "display subId: " + mSubId);
+        Intent intent = getIntent();
+        if (intent != null) {
+            mSubId = intent.getIntExtra(Settings.EXTRA_SUB_ID,
+                    MobileNetworkUtils.getSearchableSubscriptionId(context));
+            Log.i(LOG_TAG, "display subId from intent: " + mSubId);
+        } else {
+            mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
+                    MobileNetworkUtils.getSearchableSubscriptionId(context));
+            Log.i(LOG_TAG, "display subId from getArguments(): " + mSubId);
+        }
 
         if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
             return Arrays.asList();
@@ -131,6 +141,30 @@
     public void onAttach(Context context) {
         super.onAttach(context);
 
+        Intent intent = getIntent();
+        SubscriptionInfo info = SubscriptionUtil.getSubscriptionOrDefault(context, mSubId);
+        if (info == null) {
+            Log.d(LOG_TAG, "Invalid subId request " + mSubId);
+            return;
+        }
+
+        int oldSubId = mSubId;
+        updateSubscriptions(info);
+        // If the subscription has changed or the new intent does not contain the opt in action,
+        // remove the old discovery dialog. If the activity is being recreated, we will see
+        // onCreate -> onNewIntent, so the dialog will first be recreated for the old subscription
+        // and then removed.
+        if (!MobileNetworkActivity.doesIntentContainOptInAction(intent)) {
+            removeContactDiscoveryDialog(oldSubId);
+        }
+
+        // evaluate showing the new discovery dialog if this intent contains an action to show the
+        // opt-in.
+        if (MobileNetworkActivity.doesIntentContainOptInAction(intent)) {
+            showContactDiscoveryDialog(
+                    SubscriptionUtil.getSubscriptionOrDefault(context, mSubId));
+        }
+
         final DataUsageSummaryPreferenceController dataUsageSummaryPreferenceController =
                 use(DataUsageSummaryPreferenceController.class);
         if (dataUsageSummaryPreferenceController != null) {
@@ -339,4 +373,49 @@
                     return context.getSystemService(UserManager.class).isAdminUser();
                 }
             };
+
+    private ContactDiscoveryDialogFragment getContactDiscoveryFragment(int subId) {
+        // In the case that we are rebuilding this activity after it has been destroyed and
+        // recreated, look up the dialog in the fragment manager.
+        return (ContactDiscoveryDialogFragment) getChildFragmentManager()
+                .findFragmentByTag(ContactDiscoveryDialogFragment.getFragmentTag(subId));
+    }
+
+
+    private void removeContactDiscoveryDialog(int subId) {
+        ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(subId);
+        if (fragment != null) {
+            fragment.dismiss();
+        }
+    }
+
+    private void showContactDiscoveryDialog(SubscriptionInfo info) {
+        if (info == null) {
+            Log.d(LOG_TAG, "Invalid subId request " + mSubId);
+            onDestroy();
+            return;
+        }
+
+        CharSequence carrierName = SubscriptionUtil.getUniqueSubscriptionDisplayName(info,
+                getContext());
+        ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(mSubId);
+        if (fragment == null) {
+            fragment = ContactDiscoveryDialogFragment.newInstance(mSubId, carrierName);
+        }
+        // Only try to show the dialog if it has not already been added, otherwise we may
+        // accidentally add it multiple times, causing multiple dialogs.
+        if (!fragment.isAdded()) {
+            fragment.show(getChildFragmentManager(),
+                    ContactDiscoveryDialogFragment.getFragmentTag(mSubId));
+        }
+    }
+
+    private void updateSubscriptions(SubscriptionInfo subscription) {
+        if (subscription == null) {
+            return;
+        }
+        final int subscriptionIndex = subscription.getSubscriptionId();
+
+        mSubId = subscriptionIndex;
+    }
 }
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 658f650..e2d158d 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -45,6 +45,7 @@
 import android.net.ConnectivityManager;
 import android.net.Network;
 import android.net.NetworkCapabilities;
+import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.SystemClock;
 import android.os.SystemProperties;
@@ -73,9 +74,11 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.ims.WifiCallingQueryImsState;
 import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
+import com.android.settingslib.core.instrumentation.Instrumentable;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 import com.android.settingslib.graph.SignalDrawable;
 import com.android.settingslib.utils.ThreadUtils;
@@ -1008,4 +1011,21 @@
         return context.getResources().getString(resId);
     }
 
+    public static void launchMobileNetworkSettings(Context context, SubscriptionInfo info) {
+        final int subId = info.getSubscriptionId();
+        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            Log.d(TAG, "launchMobileNetworkSettings fail, subId is invalid");
+            return;
+        }
+
+        final Bundle extra = new Bundle();
+        extra.putInt(Settings.EXTRA_SUB_ID, subId);
+        new SubSettingLauncher(context)
+                .setTitleText(SubscriptionUtil.getUniqueSubscriptionDisplayName(info, context))
+                .setDestination(MobileNetworkSettings.class.getCanonicalName())
+                .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
+                .setArguments(extra)
+                .launch();
+    }
+
 }
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index d20cc27..b26e783 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -19,6 +19,7 @@
 import android.app.Activity;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -102,7 +103,7 @@
     @VisibleForTesting
     protected void onCreateInitialization() {
         mUseNewApi = enableNewAutoSelectNetworkUI(getContext());
-        mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
+        mSubId = getSubId();
 
         mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS);
         mStatusMessagePreference = new Preference(getContext());
@@ -121,7 +122,7 @@
         mMetricsFeatureProvider = getMetricsFeatureProvider(getContext());
         mIsAggregationEnabled = enableAggregation(getContext());
         Log.d(TAG, "init: mUseNewApi:" + mUseNewApi
-                + " ,mIsAggregationEnabled:" + mIsAggregationEnabled);
+                + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId);
     }
 
     @Keep
@@ -175,6 +176,18 @@
         getPreferenceScreen().setEnabled(enable);
     }
 
+    @Keep
+    @VisibleForTesting
+    protected int getSubId() {
+        int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+        Intent intent = getActivity().getIntent();
+        if (intent != null) {
+            subId = intent.getIntExtra(Settings.EXTRA_SUB_ID,
+                    SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+        }
+        return subId;
+    }
+
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index 997235c..028c4e7 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -20,9 +20,8 @@
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
 import android.app.ProgressDialog;
-import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.os.Bundle;
+import android.content.Intent;
 import android.os.Handler;
 import android.os.HandlerExecutor;
 import android.os.Looper;
@@ -43,10 +42,8 @@
 import androidx.preference.SwitchPreference;
 
 import com.android.settings.R;
-import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.network.AllowedNetworkTypesListener;
 import com.android.settings.network.telephony.MobileNetworkUtils;
-import com.android.settings.network.telephony.NetworkSelectSettings;
 import com.android.settings.network.telephony.TelephonyTogglePreferenceController;
 import com.android.settingslib.utils.ThreadUtils;
 
@@ -151,25 +148,26 @@
     public boolean setChecked(boolean isChecked) {
         if (isChecked) {
             setAutomaticSelectionMode();
-            return false;
         } else {
-            final Bundle bundle = new Bundle();
-            bundle.putInt(Settings.EXTRA_SUB_ID, mSubId);
-            new SubSettingLauncher(mContext)
-                    .setDestination(NetworkSelectSettings.class.getName())
-                    .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT)
-                    .setTitleRes(R.string.choose_network_title)
-                    .setArguments(bundle)
-                    .launch();
-            return false;
+            if (mSwitchPreference != null) {
+                Intent intent = new Intent();
+                intent.setClassName("com.android.settings",
+                        "com.android.settings.Settings$NetworkSelectActivity");
+                intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
+                mSwitchPreference.setIntent(intent);
+            }
         }
+        return false;
     }
 
     @VisibleForTesting
     Future setAutomaticSelectionMode() {
         final long startMillis = SystemClock.elapsedRealtime();
         showAutoSelectProgressBar();
-        mSwitchPreference.setEnabled(false);
+        if (mSwitchPreference != null) {
+            mSwitchPreference.setIntent(null);
+            mSwitchPreference.setEnabled(false);
+        }
         return ThreadUtils.postOnBackgroundThread(() -> {
             // set network selection mode in background
             mTelephonyManager.setNetworkSelectionModeAutomatic();
diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
index 4047009..54f5ce1 100644
--- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java
@@ -19,14 +19,12 @@
 import static androidx.lifecycle.Lifecycle.Event.ON_START;
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
-import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.os.Bundle;
+import android.content.Intent;
 import android.provider.Settings;
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.text.TextUtils;
 
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleObserver;
@@ -35,10 +33,8 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.network.AllowedNetworkTypesListener;
 import com.android.settings.network.telephony.MobileNetworkUtils;
-import com.android.settings.network.telephony.NetworkSelectSettings;
 import com.android.settings.network.telephony.TelephonyBasePreferenceController;
 
 /**
@@ -102,6 +98,12 @@
         super.updateState(preference);
         preference.setEnabled(mTelephonyManager.getNetworkSelectionMode()
                 != TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
+
+        Intent intent = new Intent();
+        intent.setClassName("com.android.settings",
+                "com.android.settings.Settings$NetworkSelectActivity");
+        intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
+        preference.setIntent(intent);
     }
 
     @Override
@@ -114,23 +116,6 @@
         }
     }
 
-    @Override
-    public boolean handlePreferenceTreeClick(Preference preference) {
-        if (TextUtils.equals(preference.getKey(), getPreferenceKey())) {
-            final Bundle bundle = new Bundle();
-            bundle.putInt(Settings.EXTRA_SUB_ID, mSubId);
-            new SubSettingLauncher(mContext)
-                    .setDestination(NetworkSelectSettings.class.getName())
-                    .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT)
-                    .setTitleRes(R.string.choose_network_title)
-                    .setArguments(bundle)
-                    .launch();
-            return true;
-        }
-
-        return false;
-    }
-
     public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) {
         mSubId = subId;
         mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 85623b8..ab53a3f 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -256,8 +256,6 @@
                 new DockingSoundPreferenceController(context, fragment, lifecycle);
         final TouchSoundPreferenceController touchSoundPreferenceController =
                 new TouchSoundPreferenceController(context, fragment, lifecycle);
-        final VibrateOnTouchPreferenceController vibrateOnTouchPreferenceController =
-                new VibrateOnTouchPreferenceController(context, fragment, lifecycle);
         final DockAudioMediaPreferenceController dockAudioMediaPreferenceController =
                 new DockAudioMediaPreferenceController(context, fragment, lifecycle);
         final BootSoundPreferenceController bootSoundPreferenceController =
@@ -270,7 +268,6 @@
         controllers.add(chargingSoundPreferenceController);
         controllers.add(dockingSoundPreferenceController);
         controllers.add(touchSoundPreferenceController);
-        controllers.add(vibrateOnTouchPreferenceController);
         controllers.add(dockAudioMediaPreferenceController);
         controllers.add(bootSoundPreferenceController);
         controllers.add(emergencyTonePreferenceController);
@@ -281,7 +278,6 @@
                         chargingSoundPreferenceController,
                         dockingSoundPreferenceController,
                         touchSoundPreferenceController,
-                        vibrateOnTouchPreferenceController,
                         dockAudioMediaPreferenceController,
                         bootSoundPreferenceController,
                         emergencyTonePreferenceController)));
diff --git a/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java b/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java
deleted file mode 100644
index 0ae4c03..0000000
--- a/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java
+++ /dev/null
@@ -1,50 +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.settings.notification;
-
-import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
-
-import android.content.Context;
-import android.os.Vibrator;
-import android.provider.Settings.System;
-
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-public class VibrateOnTouchPreferenceController extends SettingPrefController {
-
-    private static final String KEY_VIBRATE_ON_TOUCH = "vibrate_on_touch";
-
-    public VibrateOnTouchPreferenceController(Context context, SettingsPreferenceFragment parent,
-            Lifecycle lifecycle) {
-        super(context, parent, lifecycle);
-        mPreference = new SettingPref(
-            TYPE_SYSTEM, KEY_VIBRATE_ON_TOUCH, System.HAPTIC_FEEDBACK_ENABLED, 0) {
-            @Override
-            public boolean isApplicable(Context context) {
-                return hasHaptic(context);
-            }
-        };
-
-    }
-
-    private static boolean hasHaptic(Context context) {
-        final Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
-        return vibrator != null && vibrator.hasVibrator();
-    }
-
-}
diff --git a/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java b/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java
index 170c699..5ce8b48 100644
--- a/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java
+++ b/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java
@@ -59,6 +59,7 @@
 
     @Override
     public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
         mContext = getActivity();
 
         final Intent intent = getActivity().getIntent();
@@ -81,7 +82,6 @@
             return;
         }
 
-        super.onCreate(icicle);
         mCustomBehaviorPreference = getPreferenceScreen().findPreference(CUSTOM_BEHAVIOR_KEY);
         mCustomBehaviorPreference.setOnPreferenceClickListener(
                 new Preference.OnPreferenceClickListener() {
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index c033625..a2f9922 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -268,9 +268,7 @@
                     R.string.lockpassword_choose_your_pin_header_for_fingerprint,
                     R.string.lockpassword_choose_your_pin_header_for_face,
                     R.string.lockpassword_choose_your_pin_header_for_biometrics,
-                    R.string.lockpassword_choose_password_description,
                     R.string.lock_settings_picker_biometrics_added_security_message,
-                    R.string.lockpassword_choose_pin_description,
                     R.string.lock_settings_picker_biometrics_added_security_message,
                     R.string.next_label),
 
@@ -287,8 +285,6 @@
                     R.string.lockpassword_confirm_your_pin_header,
                     0,
                     0,
-                    0,
-                    0,
                     R.string.lockpassword_confirm_label),
 
             ConfirmWrong(
@@ -304,8 +300,6 @@
                     R.string.lockpassword_confirm_pins_dont_match,
                     0,
                     0,
-                    0,
-                    0,
                     R.string.lockpassword_confirm_label);
 
             Stage(int hintInAlpha,
@@ -318,9 +312,7 @@
                     int hintInNumericForFingerprint,
                     int hintInNumericForFace,
                     int hintInNumericForBiometrics,
-                    int messageInAlpha,
                     int messageInAlphaForBiometrics,
-                    int messageInNumeric,
                     int messageInNumericForBiometrics,
                     int nextButtonText) {
 
@@ -336,10 +328,7 @@
                 this.numericHintForFace = hintInNumericForFace;
                 this.numericHintForBiometrics = hintInNumericForBiometrics;
 
-                this.alphaMessage = messageInAlpha;
                 this.alphaMessageForBiometrics = messageInAlphaForBiometrics;
-
-                this.numericMessage = messageInNumeric;
                 this.numericMessageForBiometrics = messageInNumericForBiometrics;
 
                 this.buttonText = nextButtonText;
@@ -365,11 +354,9 @@
             public final int numericHintForBiometrics;
 
             // Password description
-            public final int alphaMessage;
             public final int alphaMessageForBiometrics;
 
             // PIN description
-            public final int numericMessage;
             public final int numericMessageForBiometrics;
 
             public final int buttonText;
@@ -407,7 +394,7 @@
 
                     case TYPE_NONE:
                     default:
-                        return isAlpha ? alphaMessage : numericMessage;
+                        return 0;
                 }
             }
         }
@@ -869,12 +856,17 @@
                 setNextEnabled(canInput && length >= LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
                 mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
             }
-            int message = mUiStage.getMessage(mIsAlphaMode, getStageType());
-            if (message != 0) {
-                mMessage.setVisibility(View.VISIBLE);
-                mMessage.setText(message);
+            final int stage = getStageType();
+            if (getStageType() != Stage.TYPE_NONE) {
+                int message = mUiStage.getMessage(mIsAlphaMode, stage);
+                if (message != 0) {
+                    mMessage.setVisibility(View.VISIBLE);
+                    mMessage.setText(message);
+                } else {
+                    mMessage.setVisibility(View.INVISIBLE);
+                }
             } else {
-                mMessage.setVisibility(View.INVISIBLE);
+                mMessage.setVisibility(View.GONE);
             }
 
             setNextText(mUiStage.buttonText);
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index 016906a..3e7622c 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -363,54 +363,49 @@
 
             Introduction(
                     R.string.lock_settings_picker_biometrics_added_security_message,
-                    R.string.lockpattern_choose_pattern_description,
                     R.string.lockpattern_recording_intro_header,
                     LeftButtonMode.Gone, RightButtonMode.ContinueDisabled,
                     ID_EMPTY_MESSAGE, true),
             HelpScreen(
-                    ID_EMPTY_MESSAGE, ID_EMPTY_MESSAGE, R.string.lockpattern_settings_help_how_to_record,
+                    ID_EMPTY_MESSAGE, R.string.lockpattern_settings_help_how_to_record,
                     LeftButtonMode.Gone, RightButtonMode.Ok, ID_EMPTY_MESSAGE, false),
             ChoiceTooShort(
                     R.string.lock_settings_picker_biometrics_added_security_message,
-                    R.string.lockpattern_choose_pattern_description,
                     R.string.lockpattern_recording_incorrect_too_short,
                     LeftButtonMode.Retry, RightButtonMode.ContinueDisabled,
                     ID_EMPTY_MESSAGE, true),
             FirstChoiceValid(
                     R.string.lock_settings_picker_biometrics_added_security_message,
-                    R.string.lockpattern_choose_pattern_description,
                     R.string.lockpattern_pattern_entered_header,
                     LeftButtonMode.Retry, RightButtonMode.Continue, ID_EMPTY_MESSAGE, false),
             NeedToConfirm(
-                    ID_EMPTY_MESSAGE, ID_EMPTY_MESSAGE, R.string.lockpattern_need_to_confirm,
+                    ID_EMPTY_MESSAGE, R.string.lockpattern_need_to_confirm,
                     LeftButtonMode.Gone, RightButtonMode.ConfirmDisabled,
                     ID_EMPTY_MESSAGE, true),
             ConfirmWrong(
-                    ID_EMPTY_MESSAGE, ID_EMPTY_MESSAGE, R.string.lockpattern_need_to_unlock_wrong,
+                    ID_EMPTY_MESSAGE, R.string.lockpattern_need_to_unlock_wrong,
                     LeftButtonMode.Gone, RightButtonMode.ConfirmDisabled,
                     ID_EMPTY_MESSAGE, true),
             ChoiceConfirmed(
-                    ID_EMPTY_MESSAGE, ID_EMPTY_MESSAGE, R.string.lockpattern_pattern_confirmed_header,
+                    ID_EMPTY_MESSAGE, R.string.lockpattern_pattern_confirmed_header,
                     LeftButtonMode.Gone, RightButtonMode.Confirm, ID_EMPTY_MESSAGE, false);
 
 
             /**
              * @param messageForBiometrics The message displayed at the top, above header for
              *                              fingerprint flow.
-             * @param message The message displayed at the top.
              * @param headerMessage The message displayed at the top.
              * @param leftMode The mode of the left button.
              * @param rightMode The mode of the right button.
              * @param footerMessage The footer message.
              * @param patternEnabled Whether the pattern widget is enabled.
              */
-            Stage(int messageForBiometrics, int message, int headerMessage,
+            Stage(int messageForBiometrics, int headerMessage,
                     LeftButtonMode leftMode,
                     RightButtonMode rightMode,
                     int footerMessage, boolean patternEnabled) {
                 this.headerMessage = headerMessage;
                 this.messageForBiometrics = messageForBiometrics;
-                this.message = message;
                 this.leftMode = leftMode;
                 this.rightMode = rightMode;
                 this.footerMessage = footerMessage;
@@ -419,7 +414,6 @@
 
             final int headerMessage;
             final int messageForBiometrics;
-            final int message;
             final LeftButtonMode leftMode;
             final RightButtonMode rightMode;
             final int footerMessage;
@@ -735,11 +729,14 @@
             }
             final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
             final boolean forAnyBiometric = mForFingerprint || mForFace || mForBiometrics;
-            int message = forAnyBiometric ? stage.messageForBiometrics : stage.message;
-            if (message == ID_EMPTY_MESSAGE) {
-                layout.setDescriptionText("");
+            if (forAnyBiometric) {
+                if (stage.messageForBiometrics == ID_EMPTY_MESSAGE) {
+                    layout.setDescriptionText("");
+                } else {
+                    layout.setDescriptionText(stage.messageForBiometrics);
+                }
             } else {
-                layout.setDescriptionText(message);
+                layout.getDescriptionTextView().setVisibility(View.GONE);
             }
             if (stage.footerMessage == ID_EMPTY_MESSAGE) {
                 mFooterText.setText("");
diff --git a/src/com/android/settings/password/OWNERS b/src/com/android/settings/password/OWNERS
index 636800f..3b2013b 100644
--- a/src/com/android/settings/password/OWNERS
+++ b/src/com/android/settings/password/OWNERS
@@ -1,5 +1,6 @@
 # Default reviewers for this and subdirectories.
 curtislb@google.com
+graciecheng@google.com
 ilyamaty@google.com
 jaggies@google.com
 jbolinger@google.com
@@ -8,4 +9,4 @@
 paulcrowley@google.com
 rubinxu@google.com
 
-# Emergency approvers in case the above are not available
\ No newline at end of file
+# Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java
index 70cd6f2..7151c6d 100644
--- a/src/com/android/settings/password/SetupChooseLockPattern.java
+++ b/src/com/android/settings/password/SetupChooseLockPattern.java
@@ -142,14 +142,8 @@
                 mLeftButtonIsSkip = false;
             }
 
-            // Show generic pattern message when pattern lock screen launch in Setup wizard flow
-            // before fingerprint and face setup.
             final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
-            if (stage.message == ID_EMPTY_MESSAGE) {
-                layout.setDescriptionText("");
-            } else {
-                layout.setDescriptionText(stage.message);
-            }
+            layout.setDescriptionText("");
         }
 
         @Override
diff --git a/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceController.java b/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceController.java
new file mode 100644
index 0000000..dcc68ff
--- /dev/null
+++ b/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceController.java
@@ -0,0 +1,39 @@
+/*
+ * 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.settings.privacy;
+
+import android.annotation.NonNull;
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.safetycenter.SafetyCenterStatus;
+
+/** The preference controller for the top level privacy tile. */
+public class TopLevelPrivacyEntryPreferenceController  extends BasePreferenceController {
+
+    public TopLevelPrivacyEntryPreferenceController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (!SafetyCenterStatus.isEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/settings/safetycenter/SafetyCenterStatus.java b/src/com/android/settings/safetycenter/SafetyCenterStatus.java
new file mode 100644
index 0000000..d96bb32
--- /dev/null
+++ b/src/com/android/settings/safetycenter/SafetyCenterStatus.java
@@ -0,0 +1,36 @@
+/*
+ * 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.settings.safetycenter;
+
+import android.provider.DeviceConfig;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+/** Knows whether safety center is enabled or disabled. */
+public class SafetyCenterStatus {
+
+    /** Whether SafetyCenter page is enabled. */
+    @VisibleForTesting
+    public static final String SAFETY_CENTER_IS_ENABLED = "safety_center_is_enabled";
+
+    /** Returns true is SafetyCenter page is enabled, false otherwise. */
+    public static boolean isEnabled() {
+        // TODO(b/208625216): use SafetyManager API instead
+        return DeviceConfig.getBoolean(
+                DeviceConfig.NAMESPACE_PRIVACY, SAFETY_CENTER_IS_ENABLED, false);
+    }
+}
diff --git a/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceController.java b/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceController.java
new file mode 100644
index 0000000..b3b49b0
--- /dev/null
+++ b/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceController.java
@@ -0,0 +1,60 @@
+/*
+ * 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.settings.safetycenter;
+
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.preference.Preference;
+
+import com.android.settings.core.BasePreferenceController;
+
+/** Controller for the SafetyCenter entry in top level Settings. */
+public class TopLevelSafetyCenterEntryPreferenceController extends BasePreferenceController {
+
+    private static final String TAG = "TopLevelSafetyCenterEntryPreferenceController";
+
+    public TopLevelSafetyCenterEntryPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (SafetyCenterStatus.isEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return super.handlePreferenceTreeClick(preference);
+        }
+
+        try {
+            mContext.startActivity(new Intent(Intent.ACTION_SAFETY_CENTER));
+        } catch (ActivityNotFoundException e) {
+            Log.e(TAG, "Unable to open safety center", e);
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java
index f9cbc36..8b041b6 100644
--- a/src/com/android/settings/search/SearchResultTrampoline.java
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -109,7 +109,8 @@
             final SettingsHomepageActivity homeActivity =
                     ((SettingsApplication) getApplicationContext()).getHomeActivity();
             if (homeActivity != null) {
-                homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey);
+                homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey,
+                        /* scrollNeeded= */ true);
             }
         } else {
             // Two-pane case
diff --git a/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java b/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
index 964482e..2d98606 100644
--- a/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
+++ b/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
@@ -24,6 +24,7 @@
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.safetycenter.SafetyCenterStatus;
 
 public class TopLevelSecurityEntryPreferenceController extends BasePreferenceController {
 
@@ -37,7 +38,10 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return AVAILABLE;
+        if (!SafetyCenterStatus.isEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
     }
 
     @Override
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index 84b7523..5902b92 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -52,9 +52,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.HelpTrampoline;
 import com.android.settings.R;
-import com.android.settings.network.MobileNetworkTwoPaneUtils;
 import com.android.settings.network.SubscriptionUtil;
-import com.android.settings.network.telephony.MobileNetworkActivity;
 
 public class SimSelectNotification extends BroadcastReceiver {
     private static final String TAG = "SimSelectNotification";
@@ -262,11 +260,8 @@
 
         // Create the pending intent that will lead to the subscription setting page.
         Intent resultIntent = new Intent(Settings.ACTION_MMS_MESSAGE_SETTING);
-        resultIntent.setClass(context, MobileNetworkActivity.class);
+        resultIntent.setPackage(SETTINGS_PACKAGE_NAME);
         resultIntent.putExtra(Settings.EXTRA_SUB_ID, subId);
-        // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
-        MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(context, resultIntent,
-                Settings.ACTION_MMS_MESSAGE_SETTING);
         PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent,
                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
         builder.setContentIntent(resultPendingIntent);
diff --git a/src/com/android/settings/users/AddSupervisedUserActivity.java b/src/com/android/settings/users/AddSupervisedUserActivity.java
new file mode 100644
index 0000000..f3c5867
--- /dev/null
+++ b/src/com/android/settings/users/AddSupervisedUserActivity.java
@@ -0,0 +1,92 @@
+/*
+ * 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.settings.users;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.AlertDialog;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.NewUserRequest;
+import android.os.NewUserResponse;
+import android.os.UserManager;
+
+import androidx.annotation.Nullable;
+
+import com.android.settings.R;
+
+import java.util.Objects;
+import java.util.concurrent.Executors;
+import java.util.function.Consumer;
+
+/**
+ * Fallback activity for supervised user creation.
+ * Built to test {@link UserManager#createUser(NewUserRequest)} API.
+ */
+// TODO(b/209659998): [to-be-removed] fallback activity for supervised user creation.
+public class AddSupervisedUserActivity extends Activity {
+
+    private UserManager mUserManager;
+    private ActivityManager mActivityManager;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mUserManager = getSystemService(UserManager.class);
+        mActivityManager = getSystemService(ActivityManager.class);
+        setContentView(R.layout.add_supervised_user);
+        findViewById(R.id.createSupervisedUser).setOnClickListener(v -> createUser());
+    }
+
+    private void createUserAsync(final NewUserRequest request,
+            final Consumer<NewUserResponse> onResponse) {
+        Objects.requireNonNull(onResponse);
+
+        final Handler mMainThread = new Handler(Looper.getMainLooper());
+        Executors.newSingleThreadExecutor().execute(() -> {
+            final NewUserResponse response = mUserManager.createUser(request);
+            mMainThread.post(() -> onResponse.accept(response));
+        });
+    }
+
+    private void createUser() {
+        final NewUserRequest request = new NewUserRequest.Builder().build();
+
+        final AlertDialog pleaseWaitDialog = new AlertDialog.Builder(this)
+                .setMessage(getString(R.string.creating_new_user_dialog_message))
+                .setCancelable(false)
+                .create();
+
+        pleaseWaitDialog.show();
+        createUserAsync(request, response -> {
+            pleaseWaitDialog.dismiss();
+
+            if (response.isSuccessful()) {
+                mActivityManager.switchUser(response.getUser());
+                finish();
+            } else {
+                new AlertDialog.Builder(this)
+                        .setTitle(getString(R.string.add_user_failed))
+                        .setMessage(UserManager.UserOperationResult.class.getName()
+                                + " = " + response.getOperationResult())
+                        .setNeutralButton(getString(R.string.okay), null)
+                        .show();
+            }
+        });
+    }
+}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 096b6ee..c3f0439 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -115,6 +115,7 @@
     private static final String KEY_USER_GUEST = "user_guest";
     private static final String KEY_ADD_GUEST = "guest_add";
     private static final String KEY_ADD_USER = "user_add";
+    private static final String KEY_ADD_SUPERVISED_USER = "supervised_user_add";
     private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked";
     private static final String KEY_MULTIUSER_TOP_INTRO = "multiuser_top_intro";
 
@@ -165,10 +166,13 @@
     @VisibleForTesting
     RestrictedPreference mAddUser;
     @VisibleForTesting
+    RestrictedPreference mAddSupervisedUser;
+    @VisibleForTesting
     SparseArray<Bitmap> mUserIcons = new SparseArray<>();
     private int mRemovingUserId = -1;
     private boolean mAddingUser;
     private boolean mGuestUserAutoCreated;
+    private String mConfigSupervisedUserCreationPackage;
     private String mAddingUserName;
     private UserCapabilities mUserCaps;
     private boolean mShouldUpdateUserList = true;
@@ -300,6 +304,10 @@
         }
         mAddUser.setOnPreferenceClickListener(this);
 
+        setConfigSupervisedUserCreationPackage();
+        mAddSupervisedUser = findPreference(KEY_ADD_SUPERVISED_USER);
+        mAddSupervisedUser.setOnPreferenceClickListener(this);
+
         activity.registerReceiverAsUser(
                 mUserChangeReceiver, UserHandle.ALL, USER_REMOVED_INTENT_FILTER, null, mHandler);
 
@@ -491,6 +499,21 @@
         }
     }
 
+    private void onAddSupervisedUserClicked() {
+        final Intent intent = new Intent()
+                .setAction(UserManager.ACTION_CREATE_SUPERVISED_USER)
+                .setPackage(mConfigSupervisedUserCreationPackage);
+
+        // TODO(b/209659998): [to-be-removed] fallback activity for supervised user creation.
+        if (getActivity().getPackageManager().resolveActivity(intent, 0) == null) {
+            intent
+                .setClass(getContext(), AddSupervisedUserActivity.class)
+                .setPackage(null);
+        }
+
+        startActivity(intent);
+    }
+
     private void onRemoveUserClicked(int userId) {
         synchronized (mUserLock) {
             if (mRemovingUserId == -1 && !mAddingUser) {
@@ -1058,6 +1081,7 @@
 
         updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest));
         updateAddUser(context);
+        updateAddSupervisedUser(context);
 
         if (!mUserCaps.mUserSwitcherEnabled) {
             return;
@@ -1070,6 +1094,12 @@
 
     }
 
+    @VisibleForTesting
+    void setConfigSupervisedUserCreationPackage() {
+        mConfigSupervisedUserCreationPackage = getPrefContext().getString(
+                com.android.internal.R.string.config_supervisedUserCreationPackage);
+    }
+
     private boolean isCurrentUserGuest() {
         return mUserCaps.mIsGuest;
     }
@@ -1100,28 +1130,41 @@
     }
 
     private void updateAddUser(Context context) {
+        updateAddUserCommon(context, mAddUser, mUserCaps.mCanAddRestrictedProfile);
+    }
+
+    private void updateAddSupervisedUser(Context context) {
+        if (!TextUtils.isEmpty(mConfigSupervisedUserCreationPackage)) {
+            updateAddUserCommon(context, mAddSupervisedUser, false);
+        } else {
+            mAddSupervisedUser.setVisible(false);
+        }
+    }
+
+    private void updateAddUserCommon(Context context, RestrictedPreference addUser,
+            boolean canAddRestrictedProfile) {
         if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin)
                 && WizardManagerHelper.isDeviceProvisioned(context)
                 && mUserCaps.mUserSwitcherEnabled) {
-            mAddUser.setVisible(true);
-            mAddUser.setSelectable(true);
+            addUser.setVisible(true);
+            addUser.setSelectable(true);
             final boolean canAddMoreUsers =
                     mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY)
-                            || (mUserCaps.mCanAddRestrictedProfile
+                            || (canAddRestrictedProfile
                             && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED));
-            mAddUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow());
+            addUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow());
             if (!canAddMoreUsers) {
-                mAddUser.setSummary(
+                addUser.setSummary(
                         getString(R.string.user_add_max_count, getRealUsersCount()));
             } else {
-                mAddUser.setSummary(null);
+                addUser.setSummary(null);
             }
-            if (mAddUser.isEnabled()) {
-                mAddUser.setDisabledByAdmin(
+            if (addUser.isEnabled()) {
+                addUser.setDisabledByAdmin(
                         mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
             }
         } else {
-            mAddUser.setVisible(false);
+            addUser.setVisible(false);
         }
     }
 
@@ -1206,6 +1249,9 @@
                 onAddUserClicked(USER_TYPE_USER);
             }
             return true;
+        } else if (pref == mAddSupervisedUser) {
+            onAddSupervisedUserClicked();
+            return true;
         } else if (pref == mAddGuest) {
             mAddGuest.setEnabled(false); // prevent multiple tap issue
             mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_GUEST_ADD);
diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
index b7f3015..ff8f805 100644
--- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
+++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
@@ -20,6 +20,7 @@
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.util.Log;
+import android.util.SparseArray;
 import android.util.TypedValue;
 import android.view.View;
 import android.widget.ImageView;
@@ -59,17 +60,18 @@
     private final int mNormalBackgroundRes;
     private final int mHighlightBackgroundRes;
     private String mHighlightKey;
-    private String mPreviousHighlightKey;
     private int mHighlightPosition = RecyclerView.NO_POSITION;
     private int mScrollPosition = RecyclerView.NO_POSITION;
     private boolean mHighlightNeeded;
     private boolean mScrolled;
+    private SparseArray<PreferenceViewHolder> mViewHolders;
 
     public HighlightableTopLevelPreferenceAdapter(SettingsHomepageActivity homepageActivity,
             PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) {
         super(preferenceGroup);
         mRecyclerView = recyclerView;
         mHighlightKey = key;
+        mViewHolders = new SparseArray<>();
         mContext = preferenceGroup.getContext();
         mHomepageActivity = homepageActivity;
         final TypedValue outValue = new TypedValue();
@@ -92,6 +94,7 @@
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder, int position) {
         super.onBindViewHolder(holder, position);
+        mViewHolders.put(position, holder);
         updateBackground(holder, position);
     }
 
@@ -120,9 +123,9 @@
             return;
         }
 
+        final int previousPosition = mHighlightPosition;
         if (TextUtils.isEmpty(mHighlightKey)) {
             // De-highlight previous preference.
-            final int previousPosition = mHighlightPosition;
             mHighlightPosition = RecyclerView.NO_POSITION;
             mScrolled = true;
             if (previousPosition >= 0) {
@@ -145,10 +148,14 @@
 
         // Turn on/off highlight when screen split mode is changed.
         if (highlightNeeded != mHighlightNeeded) {
-            Log.d(TAG, "Highlight change needed: " + highlightNeeded);
+            Log.d(TAG, "Highlight needed change: " + highlightNeeded);
             mHighlightNeeded = highlightNeeded;
             mHighlightPosition = position;
             notifyItemChanged(position);
+            if (!highlightNeeded) {
+                // De-highlight to prevent a flicker
+                removeHighlightAt(previousPosition);
+            }
             return;
         }
 
@@ -156,7 +163,6 @@
             return;
         }
 
-        final int previousPosition = mHighlightPosition;
         mHighlightPosition = position;
         Log.d(TAG, "Request highlight position " + position);
         Log.d(TAG, "Is highlight needed: " + highlightNeeded);
@@ -178,20 +184,11 @@
      * preference is clicked.
      */
     public void highlightPreference(String key, boolean scrollNeeded) {
-        mPreviousHighlightKey = mHighlightKey;
         mHighlightKey = key;
         mScrolled = !scrollNeeded;
         requestHighlight();
     }
 
-    /**
-     * A function that restores the previous highlighted setting.
-     */
-    public void restorePreviousHighlight() {
-        mHighlightKey = mPreviousHighlightKey;
-        requestHighlight();
-    }
-
     @Override
     public void onHomepageLoaded() {
         scroll();
@@ -224,6 +221,17 @@
         }
     }
 
+    private void removeHighlightAt(int position) {
+        if (position >= 0) {
+            // De-highlight the existing preference view holder at an early stage
+            final PreferenceViewHolder holder = mViewHolders.get(position);
+            if (holder != null) {
+                removeHighlightBackground(holder);
+            }
+            notifyItemChanged(position);
+        }
+    }
+
     private void addHighlightBackground(PreferenceViewHolder holder) {
         final View v = holder.itemView;
         v.setBackgroundResource(mHighlightBackgroundRes);
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 68d47b5..6bb4389 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -58,9 +58,7 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) {
-            getActivity().setTitle(R.string.network_and_internet_preferences_title);
-        }
+        getActivity().setTitle(R.string.network_and_internet_preferences_title);
 
         mCertinstallerPreference = findPreference(KEY_INSTALL_CREDENTIALS);
         if (mCertinstallerPreference != null) {
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 408ffbe..0c063db 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -1503,11 +1503,15 @@
         }
 
         // Shows display name of each active subscription.
-        final String[] displayNames = SubscriptionUtil.getUniqueSubscriptionDisplayNames(
-                mContext).values().stream().toArray(String[]::new);
-        mEapSimSpinner.setAdapter(getSpinnerAdapter(displayNames));
+        final ArrayList<CharSequence> displayNames = new ArrayList<>();
+        for (SubscriptionInfo activeSubInfo : mActiveSubscriptionInfos) {
+            displayNames.add(
+                SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
+        }
+        mEapSimSpinner.setAdapter(
+            getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()])));
         mEapSimSpinner.setSelection(0 /* position */);
-        if (displayNames.length == 1) {
+        if (displayNames.size() == 1) {
             mEapSimSpinner.setEnabled(false);
         }
     }
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 011c970..127c882 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -1482,11 +1482,15 @@
         }
 
         // Shows display name of each active subscription.
-        final String[] displayNames = SubscriptionUtil.getUniqueSubscriptionDisplayNames(
-                mContext).values().stream().toArray(String[]::new);
-        mEapSimSpinner.setAdapter(getSpinnerAdapter(displayNames));
+        final ArrayList<CharSequence> displayNames = new ArrayList<>();
+        for (SubscriptionInfo activeSubInfo : mActiveSubscriptionInfos) {
+            displayNames.add(
+                    SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
+        }
+        mEapSimSpinner.setAdapter(
+                getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()])));
         mEapSimSpinner.setSelection(0 /* position */);
-        if (displayNames.length == 1) {
+        if (displayNames.size() == 1) {
             mEapSimSpinner.setEnabled(false);
         }
     }
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
index 3636341..c73bffa 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
@@ -179,7 +179,8 @@
                         .setTitle(res.getText(R.string.wifi_calling_settings_title))
                         .addEndItem(
                                 SliceAction.createToggle(
-                                        getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED),
+                                        getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED,
+                                                isWifiCallingEnabled),
                                         null /* actionTitle */, isWifiCallingEnabled))
                         .setPrimaryAction(SliceAction.createDeeplink(
                                 getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
@@ -316,7 +317,7 @@
         final Resources res = getResourcesForSubId(subId);
         return new RowBuilder()
                 .setTitle(res.getText(preferenceTitleResId))
-                .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action),
+                .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action, checked),
                         icon, res.getText(preferenceTitleResId), checked));
     }
 
@@ -370,25 +371,31 @@
     public void handleWifiCallingChanged(Intent intent) {
         final int subId = getDefaultVoiceSubId();
 
-        if (SubscriptionManager.isValidSubscriptionId(subId)) {
+        if (SubscriptionManager.isValidSubscriptionId(subId)
+                && intent.hasExtra(EXTRA_TOGGLE_STATE)) {
             final WifiCallingQueryImsState queryState = queryImsState(subId);
             if (queryState.isWifiCallingProvisioned()) {
-                final boolean currentValue = queryState.isEnabledByUser()
-                        && queryState.isAllowUserControl();
+                final boolean currentValue = isWifiCallingEnabled();
                 final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
                         currentValue);
                 final Intent activationAppIntent =
                         getWifiCallingCarrierActivityIntent(subId);
-                if (!newValue || activationAppIntent == null) {
+                if ((newValue == currentValue) && activationAppIntent == null) {
                     // If either the action is to turn off wifi calling setting
                     // or there is no activation involved - Update the setting
-                    if (newValue != currentValue) {
-                        final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
-                        imsMmTelManager.setVoWiFiSettingEnabled(newValue);
-                    }
+                    final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
+                    imsMmTelManager.setVoWiFiSettingEnabled(!newValue);
+                } else {
+                    Log.w(TAG, "action not taken: subId " + subId
+                            + " from " + currentValue + " to " + newValue);
                 }
+            } else {
+                Log.w(TAG, "action not taken: subId " + subId + " needs provision");
             }
+        } else {
+            Log.w(TAG, "action not taken: subId " + subId);
         }
+
         // notify change in slice in any case to get re-queried. This would result in displaying
         // appropriate message with the updated setting.
         mContext.getContentResolver().notifyChange(WIFI_CALLING_URI, null);
@@ -541,10 +548,20 @@
                 PendingIntent.FLAG_IMMUTABLE);
     }
 
-    private PendingIntent getBroadcastIntent(String action) {
+    /**
+     * Create PendingIntent for Slice.
+     * Note: SliceAction#createDeeplink() didn't support toggle status so far,
+     *       therefore, embedding toggle status within PendingIntent.
+     *
+     * @param action Slice action
+     * @param isChecked Status when Slice created.
+     * @return PendingIntent
+     */
+    private PendingIntent getBroadcastIntent(String action, boolean isChecked) {
         final Intent intent = new Intent(action);
         intent.setClass(mContext, SliceBroadcastReceiver.class);
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        intent.putExtra(EXTRA_TOGGLE_STATE, isChecked);
         return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
diff --git a/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java b/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java
index d80faf2..78a2c92 100644
--- a/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java
+++ b/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java
@@ -37,6 +37,7 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
+import com.android.settings.Settings;
 import com.android.settings.testutils.CommonUtils;
 import com.android.settings.testutils.UiUtils;
 
@@ -68,7 +69,7 @@
                     Context.TELECOM_SERVICE);
 
     @Rule
-    public ActivityScenarioRule<com.android.settings.network.telephony.MobileNetworkActivity>
+    public ActivityScenarioRule<Settings.MobileNetworkActivity>
             rule = new ActivityScenarioRule<>(
             new Intent(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS)
                     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index bc25377..2945bef 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -37,7 +37,6 @@
         "com.google.android.material_material",
         "setupcompat",
         "setupdesign",
-        "androidx-constraintlayout_constraintlayout-solver",
         "androidx.lifecycle_lifecycle-runtime",
         "androidx.lifecycle_lifecycle-extensions",
         "androidx.test.core",
diff --git a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
index 78a7a69..da7516b 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java
@@ -250,4 +250,22 @@
         verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice,
                 BluetoothDevicePreference.SortType.TYPE_NO_SORT);
     }
+
+    @Test
+    public void forceUpdate_deviceIsSubDevice_doesNothing() {
+        final List<BluetoothDevice> bluetoothDevices = new ArrayList<>();
+        bluetoothDevices.add(mBluetoothDevice);
+
+        when(mBluetoothAdapter.isEnabled()).thenReturn(true);
+        when(mBluetoothAdapter.getMostRecentlyConnectedDevices()).thenReturn(bluetoothDevices);
+        when(mBluetoothManager.getCachedDeviceManager()).thenReturn(mDeviceManager);
+        when(mDeviceManager.findDevice(mBluetoothDevice)).thenReturn(mCachedBluetoothDevice);
+        when(mDeviceManager.isSubDevice(mBluetoothDevice)).thenReturn(true);
+
+        mBluetoothDeviceUpdater.forceUpdate();
+
+        verify(mBluetoothDeviceUpdater, never()).removePreference(mCachedBluetoothDevice);
+        verify(mBluetoothDeviceUpdater, never()).addPreference(mCachedBluetoothDevice,
+                BluetoothDevicePreference.SortType.TYPE_NO_SORT);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
index a12131d..c1648bf 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
@@ -47,6 +47,7 @@
 import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
@@ -85,8 +86,12 @@
                 mBluetoothA2dpConfigStore));
         mPreference = spy(new BaseBluetoothDialogPreferenceImpl(mContext));
 
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC);
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC);
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .build();
+        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .build();
         mCodecConfigs[0] = mCodecConfigAAC;
         mCodecConfigs[1] = mCodecConfigSBC;
 
@@ -160,17 +165,19 @@
 
     @Test
     public void getSelectableConfigs_verifyConfig() {
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
 
-        assertThat(mController.getSelectableConfigs(null)).isEqualTo(mCodecConfigs);
+        assertThat(mController.getSelectableConfigs(null)).isEqualTo(Arrays.asList(mCodecConfigs));
     }
 
     @Test
     public void getSelectableByCodecType_verifyConfig() {
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
@@ -181,7 +188,8 @@
 
     @Test
     public void getSelectableByCodecType_unavailable() {
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
@@ -192,7 +200,8 @@
 
     @Test
     public void onBluetoothServiceConnected_verifyBluetoothA2dpConfigStore() {
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java
index 0996ae3..a042ebe 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothBitPerSampleDialogPreferenceControllerTest.java
@@ -44,6 +44,7 @@
 import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
@@ -80,25 +81,23 @@
         mPreference = new BluetoothBitPerSampleDialogPreference(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         mController.displayPreference(mScreen);
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_NONE,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_16 | BluetoothCodecConfig.BITS_PER_SAMPLE_24,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                0, 0, 0, 0);
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_NONE,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_24,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                0, 0, 0, 0);
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_16
+                                | BluetoothCodecConfig.BITS_PER_SAMPLE_24)
+                .build();
+        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_24)
+                .build();
         when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice);
     }
 
     @Test
     public void writeConfigurationValues_selectDefault_setHighest() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
 
@@ -127,7 +126,8 @@
     @Test
     public void getSelectableIndex_verifyList() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
         List<Integer> indexList = new ArrayList<>();
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java
index 81fb3fe..75d8fc4 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothChannelModeDialogPreferenceControllerTest.java
@@ -44,6 +44,7 @@
 import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
@@ -80,25 +81,23 @@
         mPreference = new BluetoothChannelModeDialogPreference(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         mController.displayPreference(mScreen);
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_NONE,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_STEREO,
-                0, 0, 0, 0);
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_NONE,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_MONO | BluetoothCodecConfig.CHANNEL_MODE_STEREO,
-                0, 0, 0, 0);
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_STEREO)
+                .build();
+        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_MONO
+                            | BluetoothCodecConfig.CHANNEL_MODE_STEREO)
+                .build();
         when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice);
     }
 
     @Test
     public void writeConfigurationValues_selectDefault_setHighest() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
 
@@ -124,7 +123,8 @@
     @Test
     public void getSelectableIndex_verifyList() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
         List<Integer> indexList = new ArrayList<>();
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
index 0f01e00..3a34aa0 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
@@ -45,6 +45,9 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.Arrays;
+import java.util.List;
+
 @RunWith(RobolectricTestRunner.class)
 public class BluetoothCodecDialogPreferenceControllerTest {
 
@@ -85,29 +88,41 @@
         mPreference = new BluetoothCodecDialogPreference(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         mController.displayPreference(mScreen);
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC,
-                BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST,
-                BluetoothCodecConfig.SAMPLE_RATE_96000 | BluetoothCodecConfig.SAMPLE_RATE_176400,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_32,
-                BluetoothCodecConfig.CHANNEL_MODE_MONO | BluetoothCodecConfig.CHANNEL_MODE_STEREO,
-                0, 0, 0, 0);
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST,
-                BluetoothCodecConfig.SAMPLE_RATE_48000 | BluetoothCodecConfig.SAMPLE_RATE_88200,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_16 | BluetoothCodecConfig.BITS_PER_SAMPLE_24,
-                BluetoothCodecConfig.CHANNEL_MODE_STEREO,
-                0, 0, 0, 0);
-        mCodecConfigAPTX = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX);
-        mCodecConfigAPTXHD = new BluetoothCodecConfig(
-                BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD);
-        mCodecConfigLDAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC);
+        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .setCodecPriority(BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000
+                        | BluetoothCodecConfig.SAMPLE_RATE_176400)
+                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_32)
+                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_MONO
+                        | BluetoothCodecConfig.CHANNEL_MODE_STEREO)
+                .build();
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .setCodecPriority(BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_48000
+                        | BluetoothCodecConfig.SAMPLE_RATE_88200)
+                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_16
+                        | BluetoothCodecConfig.BITS_PER_SAMPLE_24)
+                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_STEREO)
+                .build();
+        mCodecConfigAPTX = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX)
+                .build();
+        mCodecConfigAPTXHD = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD)
+                .build();
+        mCodecConfigLDAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC)
+                .build();
         when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice);
     }
 
     @Test
     public void writeConfigurationValues_selectDefault_setHighest() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null,
+                        Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
                 BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
@@ -121,7 +136,8 @@
     public void writeConfigurationValues_checkCodec() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC, mCodecConfigAPTX,
                 mCodecConfigAPTXHD, mCodecConfigLDAC, mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigSBC, null,
+                        Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
 
@@ -148,7 +164,8 @@
     public void writeConfigurationValues_resetHighestConfig() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC, mCodecConfigAPTX,
                 mCodecConfigAPTXHD, mCodecConfigLDAC, mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                        Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
         mController.writeConfigurationValues(2);
@@ -178,7 +195,7 @@
 
     @Test
     public void onHDAudioEnabled_optionalCodecEnabled_setsCodecTypeAsAAC() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
+        List<BluetoothCodecConfig> mCodecConfigs = Arrays.asList(mCodecConfigAAC, mCodecConfigSBC);
         mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC,
                 /* codecsLocalCapabilities= */ null,
                 mCodecConfigs);
@@ -194,7 +211,7 @@
     }
     @Test
     public void onHDAudioEnabled_optionalCodecDisabled_setsCodecTypeAsSBC() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
+        List<BluetoothCodecConfig> mCodecConfigs = Arrays.asList(mCodecConfigAAC, mCodecConfigSBC);
         mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC,
                 /* codecsLocalCapabilities= */ null,
                 mCodecConfigs);
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java
index ef209a2..e50b716 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothQualityDialogPreferenceControllerTest.java
@@ -43,6 +43,8 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.Arrays;
+
 @RunWith(RobolectricTestRunner.class)
 public class BluetoothQualityDialogPreferenceControllerTest {
 
@@ -77,18 +79,16 @@
         mPreference = new BluetoothQualityDialogPreference(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         mController.displayPreference(mScreen);
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_48000 | BluetoothCodecConfig.SAMPLE_RATE_88200,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                0, 0, 0, 0);
-        mCodecConfigLDAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_96000,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                1001, 0, 0, 0);
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_48000
+                        | BluetoothCodecConfig.SAMPLE_RATE_88200)
+                .build();
+        mCodecConfigLDAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000)
+                .setCodecSpecific1(1001)
+                .build();
         when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice);
     }
 
@@ -116,7 +116,8 @@
     @Test
     public void updateState_codeTypeIsLDAC_enablePreference() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigLDAC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigLDAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigLDAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
         mController.updateState(mPreference);
@@ -127,7 +128,8 @@
     @Test
     public void updateState_codeTypeAAC_disablePreference() {
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigLDAC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
         mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java
index c649fdf..fca154d 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothSampleRateDialogPreferenceControllerTest.java
@@ -44,6 +44,7 @@
 import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
@@ -81,26 +82,26 @@
         mPreference = new BluetoothSampleRateDialogPreference(mContext);
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         mController.displayPreference(mScreen);
-        mCodecConfigAAC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_48000 | BluetoothCodecConfig.SAMPLE_RATE_88200,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                0, 0, 0, 0);
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC,
-                BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT,
-                BluetoothCodecConfig.SAMPLE_RATE_96000,
-                BluetoothCodecConfig.BITS_PER_SAMPLE_NONE,
-                BluetoothCodecConfig.CHANNEL_MODE_NONE,
-                0, 0, 0, 0);
+        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_48000
+                                | BluetoothCodecConfig.SAMPLE_RATE_88200)
+                .build();
+        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000)
+                .build();
         when(mBluetoothA2dp.getActiveDevice()).thenReturn(mActiveDevice);
     }
 
     @Test
     public void writeConfigurationValues_selectDefault_setHighest() {
-        mCodecConfigSBC = new BluetoothCodecConfig(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC);
+        BluetoothCodecConfig mCodecConfigSBC = new BluetoothCodecConfig.Builder()
+                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
+                .build();
         BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
+        mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null,
+                Arrays.asList(mCodecConfigs));
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
@@ -132,7 +133,10 @@
 
     @Test
     public void getSelectableIndex_verifyList() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC};
+        List<BluetoothCodecConfig> mCodecConfigs = new ArrayList() {{
+                    add(mCodecConfigAAC);
+                    add(mCodecConfigSBC);
+                }};
         mCodecStatus = new BluetoothCodecStatus(mCodecConfigAAC, null, mCodecConfigs);
         when(mBluetoothA2dp.getCodecStatus(
             mActiveDevice)).thenReturn(mCodecStatus);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
index 700522a..da0002c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
@@ -21,11 +21,7 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -37,14 +33,11 @@
 import androidx.preference.Preference;
 
 import com.android.settings.R;
-import com.android.settings.testutils.FakeFeatureFactory;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
@@ -53,24 +46,14 @@
 @RunWith(RobolectricTestRunner.class)
 public class TopLevelBatteryPreferenceControllerTest {
     private Context mContext;
-    private FakeFeatureFactory mFeatureFactory;
     private TopLevelBatteryPreferenceController mController;
     private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
-    private ArgumentCaptor<Intent> mIntentArgumentCaptor;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mFeatureFactory = FakeFeatureFactory.setupForTest();
         mContext = spy(Robolectric.setupActivity(Activity.class));
         mController = new TopLevelBatteryPreferenceController(mContext, "test_key");
-        mBatterySettingsFeatureProvider =
-                mFeatureFactory.batterySettingsFeatureProvider;
-    }
-
-    @After
-    public void cleanUp() {
-        TopLevelBatteryPreferenceController.sReplacingActivityMap.clear();
     }
 
     @Test
@@ -85,56 +68,6 @@
     }
 
     @Test
-    public void handlePreferenceTreeClick_noFragment_noCustomActivityCalled() {
-        Preference preference = new Preference(mContext);
-
-        assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_sameActivityReturned_noCustomActivityCalled() {
-        String fragmentPath = "my.fragment.ClassName";
-        Preference preference = mock(Preference.class);
-        when(preference.getFragment()).thenReturn(fragmentPath);
-        ComponentName pathName = mController.convertClassPathToComponentName(fragmentPath);
-        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(pathName);
-
-        assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
-    }
-
-    @Test
-    @Ignore
-    public void handlePreferenceTreeClick_newActivityReturned_newActivityRedirected() {
-        String fragmentPath = "my.fragment.ClassName";
-        Preference preference = mock(Preference.class);
-        when(preference.getFragment()).thenReturn(fragmentPath);
-        String newFragmentPath = "my.fragment.NewClassName";
-        ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
-        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
-                newPathName);
-        doNothing().when(mContext).startActivity(mIntentArgumentCaptor.capture());
-
-        assertThat(mIntentArgumentCaptor.getValue().getComponent()).isEqualTo(newPathName);
-        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_calledMultipleTimes_fetchedFromCache() {
-        String fragmentPath = "my.fragment.ClassName";
-        Preference preference = mock(Preference.class);
-        when(preference.getFragment()).thenReturn(fragmentPath);
-        String newFragmentPath = "my.fragment.NewClassName";
-        ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
-        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
-                newPathName);
-        doNothing().when(mContext).startActivity(any());
-
-        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
-        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
-        verify(mBatterySettingsFeatureProvider, times(1)).getReplacingActivity(any());
-    }
-
-    @Test
     public void convertClassPathToComponentName_nullInput_returnsNull() {
         assertThat(mController.convertClassPathToComponentName(null)).isNull();
     }
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
index 6870e7a..66536a5 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
@@ -44,7 +44,7 @@
 import androidx.lifecycle.Lifecycle;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.network.telephony.MobileNetworkActivity;
+import com.android.settings.Settings.MobileNetworkActivity;
 import com.android.settings.widget.AddPreference;
 import com.android.settingslib.RestrictedLockUtils;
 
@@ -212,86 +212,6 @@
     }
 
     @Test
-    @Ignore
-    public void getSummary_twoSubscriptions_correctSummaryAndFragment() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false);
-        final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
-        final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
-        when(sub1.getSubscriptionId()).thenReturn(1);
-        when(sub2.getSubscriptionId()).thenReturn(2);
-
-        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
-        mController.displayPreference(mPreferenceScreen);
-        mController.onResume();
-        assertThat(mController.getSummary()).isEqualTo("2 SIMs");
-        assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName());
-    }
-
-    @Test
-    @Ignore
-    public void getSummaryAfterUpdate_twoSubscriptionsBecomesOne_correctSummaryAndFragment() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false);
-        final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
-        final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
-        when(sub1.getSubscriptionId()).thenReturn(1);
-        when(sub2.getSubscriptionId()).thenReturn(2);
-        when(sub1.getDisplayName()).thenReturn("sub1");
-        when(sub2.getDisplayName()).thenReturn("sub2");
-
-        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
-        SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2));
-        mController.displayPreference(mPreferenceScreen);
-        mController.onResume();
-        assertThat(mController.getSummary()).isEqualTo("2 SIMs");
-        assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName());
-
-        // Simulate sub2 having disappeared - the end result should change to be the same as
-        // if there were just one subscription.
-        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1));
-        mController.onSubscriptionsChanged();
-        assertThat(mController.getSummary()).isEqualTo("sub1");
-        assertThat(mPreference.getFragment()).isNull();
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(intentCaptor.capture());
-        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
-        assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
-                MobileNetworkActivity.class.getName());
-    }
-
-    @Test
-    @Ignore
-    public void getSummaryAfterUpdate_oneSubscriptionBecomesTwo_correctSummaryAndFragment() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false);
-        final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
-        final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
-        when(sub1.getSubscriptionId()).thenReturn(1);
-        when(sub2.getSubscriptionId()).thenReturn(2);
-        when(sub1.getDisplayName()).thenReturn("sub1");
-        when(sub2.getDisplayName()).thenReturn("sub2");
-
-        when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(
-                Arrays.asList(sub1));
-        SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1));
-        mController.displayPreference(mPreferenceScreen);
-        mController.onResume();
-        assertThat(mController.getSummary()).isEqualTo("sub1");
-        assertThat(mPreference.getFragment()).isNull();
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(intentCaptor.capture());
-        mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference);
-        assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo(
-                MobileNetworkActivity.class.getName());
-
-        // Simulate sub2 appearing in the list of subscriptions and check the results.
-        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
-        mController.displayPreference(mPreferenceScreen);
-        mController.onResume();
-        assertThat(mController.getSummary()).isEqualTo("2 SIMs");
-        assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName());
-    }
-
-    @Test
-    @Ignore
     public void getSummary_providerModel_Enabled() {
         final SubscriptionInfo sub1 = mock(SubscriptionInfo.class);
         final SubscriptionInfo sub2 = mock(SubscriptionInfo.class);
@@ -302,15 +222,9 @@
 
         SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2));
         SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2));
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         mController.displayPreference(mPreferenceScreen);
         mController.onResume();
         assertThat(mController.getSummary()).isEqualTo("sub1, sub2");
-
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false);
-        mController.displayPreference(mPreferenceScreen);
-        mController.onResume();
-        assertThat(mController.getSummary()).isEqualTo("2 SIMs");
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
deleted file mode 100644
index 459d77e..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
+++ /dev/null
@@ -1,220 +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.settings.network.telephony;
-
-import static androidx.lifecycle.Lifecycle.State;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.test.core.app.ActivityScenario;
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.internal.telephony.TelephonyIntents;
-import com.android.settings.network.ProxySubscriptionManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.shadows.ShadowSubscriptionManager;
-import org.robolectric.shadows.ShadowSubscriptionManager.SubscriptionInfoBuilder;
-
-@RunWith(AndroidJUnit4.class)
-public class MobileNetworkActivityTest {
-
-    private static final int CURRENT_SUB_ID = 3;
-    private static final int PREV_SUB_ID = 1;
-
-    private Context mContext;
-    private ShadowContextImpl mShadowContextImpl;
-    private Intent mTestIntent;
-
-    @Mock
-    private UserManager mUserManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-
-    private ShadowSubscriptionManager mSubscriptionManager;
-    private SubscriptionInfo mSubscriptionInfo1;
-    private SubscriptionInfo mSubscriptionInfo2;
-
-    private ActivityScenario<MobileNetworkActivity> mMobileNetworkActivity;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = ApplicationProvider.getApplicationContext();
-        mShadowContextImpl = Shadow.extract(RuntimeEnvironment.application.getBaseContext());
-
-        mShadowContextImpl.setSystemService(Context.USER_SERVICE, mUserManager);
-        doReturn(true).when(mUserManager).isAdminUser();
-
-        mShadowContextImpl.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
-
-        mTestIntent = new Intent(mContext, MockMobileNetworkActivity.class);
-
-        mSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
-        mSubscriptionInfo1 = SubscriptionInfoBuilder.newBuilder()
-                .setId(PREV_SUB_ID).buildSubscriptionInfo();
-        mSubscriptionInfo2 = SubscriptionInfoBuilder.newBuilder()
-                .setId(CURRENT_SUB_ID).buildSubscriptionInfo();
-    }
-
-    @After
-    public void cleanUp() {
-        if (mMobileNetworkActivity != null) {
-            mMobileNetworkActivity.close();
-        }
-    }
-
-    private static class MockMobileNetworkActivity extends MobileNetworkActivity {
-        private MockMobileNetworkActivity() {
-            super();
-        }
-
-        private SubscriptionInfo mSubscriptionInFragment;
-
-        @Override
-        ProxySubscriptionManager getProxySubscriptionManager() {
-            if (mProxySubscriptionMgr == null) {
-                mProxySubscriptionMgr = mock(ProxySubscriptionManager.class);
-            }
-            return mProxySubscriptionMgr;
-        }
-
-        @Override
-        void registerActiveSubscriptionsListener() {
-            onChanged();
-        }
-
-        @Override
-        void switchFragment(SubscriptionInfo subInfo) {
-            mSubscriptionInFragment = subInfo;
-        }
-    }
-
-    private ActivityScenario<MobileNetworkActivity> createTargetActivity(Intent activityIntent) {
-        return ActivityScenario.launch(activityIntent);
-    }
-
-    @Test
-    @Ignore
-    public void updateBottomNavigationView_oneSubscription_shouldNotCrash() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-    }
-
-    @Test
-    @Ignore
-    public void updateBottomNavigationView_twoSubscription_shouldNotCrash() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-    }
-
-    @Test
-    @Ignore
-    public void switchFragment_switchBetweenTwoSubscriptions() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mTestIntent.putExtra(Settings.EXTRA_SUB_ID, PREV_SUB_ID);
-        mMobileNetworkActivity = createTargetActivity(mTestIntent);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final MockMobileNetworkActivity mockActivity = (MockMobileNetworkActivity) activity;
-            mockActivity.switchFragment(mSubscriptionInfo1);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
-        });
-    }
-
-    @Test
-    @Ignore
-    public void switchFragment_subscriptionsUpdate_notifyByIntent() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mTestIntent.putExtra(Settings.EXTRA_SUB_ID, PREV_SUB_ID);
-        mMobileNetworkActivity = createTargetActivity(mTestIntent);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final MockMobileNetworkActivity mockActivity = (MockMobileNetworkActivity) activity;
-            mockActivity.switchFragment(mSubscriptionInfo1);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
-
-            mContext.sendBroadcast(new Intent(
-                    CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED), null);
-
-            mockActivity.switchFragment(mSubscriptionInfo2);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo2);
-
-            mContext.sendBroadcast(new Intent(
-                    TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED), null);
-
-            mockActivity.switchFragment(mSubscriptionInfo1);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
-        });
-    }
-
-    @Test
-    @Ignore
-    public void onSaveInstanceState_saveCurrentSubId() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mTestIntent.putExtra(Settings.EXTRA_SUB_ID, PREV_SUB_ID);
-        mMobileNetworkActivity = createTargetActivity(mTestIntent);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final Bundle bundle = new Bundle();
-            activity.saveInstanceState(bundle);
-            assertThat(bundle.getInt(Settings.EXTRA_SUB_ID)).isEqualTo(PREV_SUB_ID);
-        });
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java
deleted file mode 100644
index 2b2f02c..0000000
--- a/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java
+++ /dev/null
@@ -1,121 +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.settings.notification;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.when;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.os.Vibrator;
-import android.provider.Settings.System;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class VibrateOnTouchPreferenceControllerTest {
-
-    @Mock
-    private PreferenceScreen mScreen;
-    @Mock
-    private FragmentActivity mActivity;
-    @Mock
-    private ContentResolver mContentResolver;
-    @Mock
-    private SoundSettings mSetting;
-    @Mock
-    private Context mContext;
-    @Mock
-    private Vibrator mVibrator;
-
-    private VibrateOnTouchPreferenceController mController;
-    private SwitchPreference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        when(mActivity.getSystemService(Context.VIBRATOR_SERVICE)).thenReturn(mVibrator);
-        when(mContext.getSystemService(Context.VIBRATOR_SERVICE)).thenReturn(mVibrator);
-        when(mVibrator.hasVibrator()).thenReturn(true);
-        when(mSetting.getActivity()).thenReturn(mActivity);
-        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
-        mPreference = new SwitchPreference(RuntimeEnvironment.application);
-        mController = new VibrateOnTouchPreferenceController(mContext, mSetting, null);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
-        doReturn(mScreen).when(mSetting).getPreferenceScreen();
-    }
-
-    @Test
-    public void isAvailable_hasHaptic_shouldReturnTrue() {
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_noHaptic_shouldReturnFalse() {
-        when(mVibrator.hasVibrator()).thenReturn(false);
-
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void displayPreference_hapticEnabled_shouldCheckedPreference() {
-        System.putInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1);
-
-        mController.displayPreference(mScreen);
-
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void displayPreference_hapticDisabled_shouldUncheckedPreference() {
-        System.putInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 0);
-
-        mController.displayPreference(mScreen);
-
-        assertThat(mPreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void onPreferenceChanged_preferenceChecked_shouldEnabledHaptic() {
-        mController.displayPreference(mScreen);
-
-        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
-
-        assertThat(System.getInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1)).isEqualTo(1);
-    }
-
-    @Test
-    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledHaptic() {
-        mController.displayPreference(mScreen);
-
-        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
-
-        assertThat(System.getInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1)).isEqualTo(0);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index 9d35797..d8f3959 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -59,6 +59,7 @@
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.SubSettings;
+import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settingslib.RestrictedLockUtils;
@@ -85,7 +86,11 @@
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserManager.class, ShadowDevicePolicyManager.class})
+@Config(shadows = {
+        ShadowUserManager.class,
+        ShadowDevicePolicyManager.class,
+        SettingsShadowResources.class,
+})
 public class UserSettingsTest {
 
     private static final String KEY_USER_GUEST = "user_guest";
@@ -111,6 +116,8 @@
     @Mock
     private RestrictedPreference mAddUserPreference;
     @Mock
+    private RestrictedPreference mAddSupervisedUserPreference;
+    @Mock
     private RestrictedPreference mAddGuestPreference;
     @Mock
     private UserManager mUserManager;
@@ -161,6 +168,7 @@
 
         mFragment.mMePreference = mMePreference;
         mFragment.mAddUser = mAddUserPreference;
+        mFragment.mAddSupervisedUser = mAddSupervisedUserPreference;
         mFragment.mAddGuest = mAddGuestPreference;
         mFragment.mUserListCategory = mock(PreferenceCategory.class);
     }
@@ -169,6 +177,7 @@
     public void tearDown() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.DEVICE_PROVISIONED, mProvisionedBackupValue);
+        SettingsShadowResources.reset();
     }
 
     @Test
@@ -694,6 +703,36 @@
         verify(mUserManager).getUsers();
     }
 
+    private void setConfigSupervisedUserCreationPackage(String value) {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.string.config_supervisedUserCreationPackage,
+                value
+        );
+        mFragment.setConfigSupervisedUserCreationPackage();
+        mUserCapabilities.mCanAddUser = true;
+        mFragment.updateUserList();
+    }
+
+    @Test
+    public void addSupervisedUserOption_resourceIsDefined_shouldBeDisplayed() {
+        try {
+            setConfigSupervisedUserCreationPackage("test");
+            verify(mAddSupervisedUserPreference).setVisible(true);
+        } finally {
+            SettingsShadowResources.reset();
+        }
+    }
+
+    @Test
+    public void addSupervisedUserOption_resourceIsNotDefined_shouldBeHidden() {
+        try {
+            setConfigSupervisedUserCreationPackage("");
+            verify(mAddSupervisedUserPreference).setVisible(false);
+        } finally {
+            SettingsShadowResources.reset();
+        }
+    }
+
     private void givenUsers(UserInfo... userInfo) {
         List<UserInfo> users = Arrays.asList(userInfo);
         doReturn(users).when(mUserManager).getUsers();
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index a3c2535..74bddda 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -74,12 +74,12 @@
 
     private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
     private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
+    private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
     private static final String TEST_EMERGENCY_ADDRESS_CARRIER_APP =
             "com.android.settings/.wifi.calling.TestEmergencyAddressCarrierApp";
 
     private TestFragment mFragment;
     private Context mContext;
-    private TextView mEmptyView;
     private final PersistableBundle mBundle = new PersistableBundle();
 
     private MockWifiCallingQueryImsState mQueryImsState;
@@ -100,6 +100,8 @@
     @Mock
     private View mView;
     @Mock
+    private LinkifyDescriptionPreference mDescriptionView;
+    @Mock
     private ListWithEntrySummaryPreference mButtonWfcMode;
     @Mock
     private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
@@ -126,12 +128,10 @@
         doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any());
         doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE);
         doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE);
+        doReturn(mDescriptionView).when(mFragment).findPreference(PREFERENCE_NO_OPTIONS_DESC);
         doNothing().when(mFragment).finish();
         doReturn(mView).when(mFragment).getView();
 
-        mEmptyView = new TextView(mContext);
-        doReturn(mEmptyView).when(mView).findViewById(android.R.id.empty);
-
         mSwitchBar = new SettingsMainSwitchBar(mContext);
         doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
 
@@ -211,8 +211,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is shown.
-        verify(mPreferenceScreen, times(1)).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, never()).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(true);
     }
 
     @Test
@@ -225,8 +224,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -239,8 +237,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -253,8 +250,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -332,9 +328,9 @@
                 Activity.RESULT_OK, null);
 
         // Check the WFC preferences is added.
-        verify(mPreferenceScreen).addPreference(mButtonWfcMode);
-        verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen).addPreference(mUpdateAddress);
+        verify(mButtonWfcMode).setVisible(true);
+        verify(mButtonWfcRoamingMode).setVisible(true);
+        verify(mUpdateAddress).setVisible(true);
         // Check the WFC enable request.
         verify(mImsMmTelManager).setVoWiFiSettingEnabled(true);
     }
diff --git a/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java b/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
index 9789c5f..735992b 100644
--- a/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
+++ b/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
@@ -153,14 +153,6 @@
                     "Touch sounds", Settings.System.SOUND_EFFECTS_ENABLED));
     }
 
-    @MediumTest
-    public void testOtherSoundsVibrateOnTap() throws Exception {
-        loadOtherSoundsPage();
-        assertTrue("Vibrate on tap not toggled",
-                    mHelper.verifyToggleSetting(SettingsType.SYSTEM, PAGE,
-                    "Vibrate on tap", Settings.System.HAPTIC_FEEDBACK_ENABLED));
-    }
-
     private void loadOtherSoundsPage() throws Exception {
         launchSoundSettings();
         mHelper.scrollVert(false);
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java b/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java
new file mode 100644
index 0000000..a97656c
--- /dev/null
+++ b/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java
@@ -0,0 +1,198 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.LocaleManager;
+import android.content.Context;
+import android.os.LocaleList;
+import android.os.Looper;
+import android.telephony.TelephonyManager;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.google.common.collect.Iterables;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Locale;
+
+@RunWith(AndroidJUnit4.class)
+public class AppLocaleDetailsTest {
+    private static final String APP_PACKAGE_NAME = "app_package_name";
+
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private LocaleManager mLocaleManager;
+
+    private Context mContext;
+    private LocaleList mSystemLocales;
+    private Locale mSimLocale;
+    private LocaleList mAppLocale;
+    private String[] mAssetLocales;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mContext.getSystemService(LocaleManager.class)).thenReturn(mLocaleManager);
+
+        setupInitialLocales("en",
+                "uk",
+                "en, uk, jp, ne",
+                new String[]{"en", "ne", "ms", "pa"});
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_localeManagerIsNull_noCrash() {
+        when(mContext.getSystemService(LocaleManager.class)).thenReturn(null);
+
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_1stLocaleOfSuggestedLocaleListIsAppLocale() {
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+
+        Locale locale = Iterables.get(helper.getSuggestedLocales(), 0);
+        assertTrue(locale.equals(mAppLocale.get(0)));
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_2ndLocaleOfSuggestedLocaleListIsSimLocale() {
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+
+        Locale locale = Iterables.get(helper.getSuggestedLocales(), 1);
+        assertTrue(locale.equals(mSimLocale));
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_withoutAppLocale_1stLocaleOfSuggestedLocaleListIsSimLocal() {
+        setupInitialLocales("",
+                "uk",
+                "en, uk, jp, ne",
+                new String[]{"en", "ne", "ms", "pa"});
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+
+        Locale locale = Iterables.get(helper.getSuggestedLocales(), 0);
+        assertTrue(locale.equals(mSimLocale));
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_noAppAndSimLocale_1stLocaleIsFirstOneInSystemLocales() {
+        setupInitialLocales("",
+                "",
+                "en, uk, jp, ne",
+                new String[]{"en", "ne", "ms", "pa"});
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+
+        Locale locale = Iterables.get(helper.getSuggestedLocales(), 0);
+        assertTrue(locale.equals(mSystemLocales.get(0)));
+    }
+
+    @Test
+    @UiThreadTest
+    public void handleAllLocalesData_supportLocaleListIsNotEmpty() {
+        DummyAppLocaleDetailsHelper helper =
+                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
+
+        helper.handleAllLocalesData();
+
+        assertFalse(helper.getSupportedLocales().isEmpty());
+    }
+
+    /**
+     * Sets the initial Locale data
+     *
+     * @param appLocale     Application locale, it shall be a language tag.
+     *                      example: "en"
+     * @param simLocale     SIM carrier locale, it shall be a language tag.
+     *                      example: "en"
+     * @param systemLocales System locales, a locale list by a multiple language tags with comma.
+     *                      example: "en, uk, jp"
+     * @param assetLocales  Asset locales, a locale list by a multiple language tags with String
+     *                      array.
+     *                      example: new String[] {"en", "ne", "ms", "pa"}
+     */
+    private void setupInitialLocales(String appLocale,
+            String simLocale,
+            String systemLocales,
+            String[] assetLocales) {
+        mAppLocale = LocaleList.forLanguageTags(appLocale);
+        mSimLocale = Locale.forLanguageTag(simLocale);
+        mSystemLocales = LocaleList.forLanguageTags(systemLocales);
+        mAssetLocales = assetLocales;
+        when(mTelephonyManager.getSimLocale()).thenReturn(simLocale.isEmpty() ? null : mSimLocale);
+        when(mLocaleManager.getApplicationLocales(anyString())).thenReturn(mAppLocale);
+    }
+
+    private class DummyAppLocaleDetailsHelper
+            extends AppLocaleDetails.AppLocaleDetailsHelper {
+
+        DummyAppLocaleDetailsHelper(Context context, String packageName) {
+            super(context, packageName);
+        }
+
+        @Override
+        String[] getAssetSystemLocales() {
+            return mAssetLocales;
+        }
+
+        @Override
+        LocaleList getCurrentSystemLocales() {
+            return mSystemLocales;
+        }
+    }
+
+}
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePickerActivityTest.java b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePickerActivityTest.java
new file mode 100644
index 0000000..f6f56d9
--- /dev/null
+++ b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePickerActivityTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Looper;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.applications.AppInfoBase;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class AppLocalePickerActivityTest {
+    private TestAppLocalePickerActivity mActivity;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mActivity = new TestAppLocalePickerActivity();
+    }
+
+    @After
+    public void cleanUp() {
+        mActivity = null;
+    }
+
+    @Test
+    public void onCreate_getEntryIntent_returnNull() {
+        TestAppLocalePickerActivity.setCallingPackage(null);
+        Intent intent = new Intent();
+
+        assertThat(mActivity.getEntryIntent(intent)).isEqualTo(null);
+    }
+
+    @Test
+    public void onCreate_getEntryIntent_returnIntentWithPackageName() {
+        String callingPackageName = "com.example.android";
+        TestAppLocalePickerActivity.setCallingPackage(callingPackageName);
+        Intent intent = new Intent();
+
+        Intent entryIntent = mActivity.getEntryIntent(intent);
+
+        Bundle outputBundle =
+                entryIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+        String packageName = outputBundle.getString(AppInfoBase.ARG_PACKAGE_NAME);
+        assertThat(packageName).isEqualTo(callingPackageName);
+    }
+
+    private static class TestAppLocalePickerActivity extends AppLocalePickerActivity {
+        private static String sCallingPackage;
+        @Override
+        public String getCallingPackage() {
+            return sCallingPackage;
+        }
+
+        public static void setCallingPackage(String packageName) {
+            sCallingPackage = packageName;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java
new file mode 100644
index 0000000..d7e3f92
--- /dev/null
+++ b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.core.BasePreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AppLocalePreferenceControllerTest {
+
+    private Context mContext;
+    private AppLocalePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+
+        mController = spy(new AppLocalePreferenceController(mContext, "test_key"));
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, true);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureFlagOff_shouldReturnUnavailable() {
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, false);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureFlagOn_shouldReturnAvailable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java
new file mode 100644
index 0000000..648c757
--- /dev/null
+++ b/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.settings.applications.appinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+
+import com.android.settings.core.BasePreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ManageAppLocalePreferenceControllerTest {
+    private Context mContext;
+    private ManageAppLocalePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mController = spy(new ManageAppLocalePreferenceController(mContext, "a key"));
+
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, true);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureFlagOff_shouldReturnUnavailable() {
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, false);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureFlagOn_shouldReturnAvailable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index 5360dac..9cd6f2d 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -33,6 +33,7 @@
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_LABEL_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_VALUE_ID;
 
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
@@ -78,12 +79,16 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
 
 @RunWith(AndroidJUnit4.class)
 public class SimStatusDialogControllerTest {
 
     @Mock
     private SimStatusDialogFragment mDialog;
+    @Mock
     private TelephonyManager mTelephonyManager;
     @Mock
     private SubscriptionInfo mSubscriptionInfo;
@@ -109,6 +114,9 @@
     @Mock
     private LifecycleOwner mLifecycleOwner;
     private Lifecycle mLifecycle;
+    private AtomicBoolean mEuiccEnabled;
+    private AtomicReference<String> mEid;
+    private AtomicInteger mUpdatePhoneNumberCount;
 
     private static final String TEST_EID_FROM_CARD = "11111111111111111111111111111111";
     private static final String TEST_EID_FROM_MANAGER = "22222222222222222222222222222222";
@@ -139,7 +147,26 @@
         doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
         doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
 
-        mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
+        mUpdatePhoneNumberCount = new AtomicInteger();
+        mEuiccEnabled = new AtomicBoolean(false);
+        mEid = new AtomicReference<String>("");
+        mController = new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */) {
+            @Override
+            public TelephonyManager getTelephonyManager() {
+                return mTelephonyManager;
+            }
+
+            @Override
+            public AtomicReference<String> getEid(int slotIndex) {
+                return mEuiccEnabled.get() ? mEid : null;
+            }
+
+            @Override
+            public void updatePhoneNumber() {
+                super.updatePhoneNumber();
+                mUpdatePhoneNumberCount.incrementAndGet();
+            }
+        };
         // CellSignalStrength setup
         doReturn(0).when(mCellSignalStrengthCdma).getDbm();
         doReturn(0).when(mCellSignalStrengthCdma).getAsuLevel();
@@ -157,7 +184,7 @@
                 .getLogicalToPhysicalSlotMapping();
 
         when(mEuiccManager.isEnabled()).thenReturn(false);
-        when(mEuiccManager.getEid()).thenReturn("");
+        mEuiccEnabled.set(false);
         when(mEuiccManager.createForCardId(anyInt())).thenReturn(mEuiccManager);
 
         mPersistableBundle = new PersistableBundle();
@@ -183,7 +210,7 @@
     public void initialize_shouldUpdatePhoneNumber() {
         mController.initialize();
 
-        verify(mController).updatePhoneNumber();
+        assertTrue(mUpdatePhoneNumberCount.get() > 0);
     }
 
     @Test
@@ -426,10 +453,9 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(null);
+        mEuiccEnabled.set(true);
+        mEid.set(null);
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Keep 'Not available' if neither the card nor the associated manager can provide EID.
@@ -480,11 +506,10 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
+        mEuiccEnabled.set(true);
+        mEid.set(TEST_EID_FROM_CARD);
         when(mEuiccManager.createForCardId(0)).thenReturn(mEuiccManager);
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Set EID retrieved from the card.
@@ -538,13 +563,12 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
+        mEuiccEnabled.set(true);
+        mEid.set(TEST_EID_FROM_MANAGER);
         when(mEuiccManager.createForCardId(0)).thenThrow(
                 new RuntimeException("Unexpected card ID was specified"));
         when(mEuiccManager.createForCardId(1)).thenReturn(mEuiccManager);
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Set EID retrieved from the manager associated with the card which cannot provide EID.
@@ -552,6 +576,7 @@
         verify(mDialog, never()).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
     }
 
+    @Ignore
     @Test
     public void initialize_updateEid_shouldRemoveEid() {
         when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_DUAL_SIM);
@@ -597,9 +622,9 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
+        mEuiccEnabled.set(true);
+        mEid.set(TEST_EID_FROM_MANAGER);
 
-        doNothing().when(mController).requestForUpdateEid();
         mController.updateEid(mController.getEid(0));
         mController.initialize();
 
@@ -637,10 +662,9 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(null);
+        mEuiccEnabled.set(true);
+        mEid.set(null);
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Keep 'Not available' if the default eUICC manager cannot provide EID in Single SIM mode.
@@ -677,12 +701,11 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
+        mEuiccEnabled.set(true);
+        mEid.set(TEST_EID_FROM_MANAGER);
         when(mEuiccManager.createForCardId(anyInt())).thenThrow(
                 new RuntimeException("EID shall be retrieved from the default eUICC manager"));
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Set EID retrieved from the default eUICC manager in Single SIM mode.
@@ -719,12 +742,11 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(true);
-        when(mEuiccManager.getEid()).thenReturn(TEST_EID_FROM_MANAGER);
+        mEuiccEnabled.set(true);
+        mEid.set(TEST_EID_FROM_MANAGER);
         when(mEuiccManager.createForCardId(anyInt())).thenThrow(
                 new RuntimeException("EID shall be retrieved from the default eUICC manager"));
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Set EID retrieved from the default eUICC manager in Single SIM mode.
@@ -760,14 +782,12 @@
         when(mTelephonyManager.getLogicalToPhysicalSlotMapping()).thenReturn(slotMapping);
 
         when(mEuiccManager.isEnabled()).thenReturn(false);
-        when(mEuiccManager.getEid()).thenReturn(null);
+        mEuiccEnabled.set(false);
+        mEid.set(null);
 
-        doNothing().when(mController).requestForUpdateEid();
-        mController.updateEid(mController.getEid(0));
         mController.initialize();
 
         // Remove EID if the default eUICC manager indicates that eSIM is not enabled.
-        verify(mDialog, never()).setText(eq(EID_INFO_VALUE_ID), any());
         verify(mDialog).removeSettingFromScreen(eq(EID_INFO_LABEL_ID));
         verify(mDialog).removeSettingFromScreen(eq(EID_INFO_VALUE_ID));
     }
diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
index 3d192cf..b0d6365 100644
--- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
+++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
@@ -34,6 +34,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -153,8 +154,8 @@
         // Each subscription has a unique last 4 digits of the phone number.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -167,6 +168,7 @@
         assertEquals(CARRIER_2, idNames.get(SUBID_2));
     }
 
+    @Ignore
     @Test
     public void getUniqueDisplayNames_identicalCarriers_fourDigitsUsed() {
         // Both subscriptoins have the same display name.
@@ -182,8 +184,8 @@
         // Each subscription has a unique last 4 digits of the phone number.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -196,6 +198,7 @@
         assertEquals(CARRIER_1 + " 4444", idNames.get(SUBID_2));
     }
 
+    @Ignore
     @Test
     public void getUniqueDisplayNames_identicalCarriersAfterTrim_fourDigitsUsed() {
         // Both subscriptoins have the same display name.
@@ -211,8 +214,8 @@
         // Each subscription has a unique last 4 digits of the phone number.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -239,8 +242,8 @@
         // The subscriptions' phone numbers cannot be revealed to the user.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("");
-        when(sub2Telmgr.getLine1Number()).thenReturn("");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -253,6 +256,7 @@
         assertEquals(CARRIER_1 + " 2", idNames.get(SUBID_2));
     }
 
+    @Ignore
     @Test
     public void getUniqueDisplayNames_phoneNumberIdentical_subscriptoinIdFallback() {
         // TODO have three here from the same carrier
@@ -274,9 +278,9 @@
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub3Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
-        when(sub3Telmgr.getLine1Number()).thenReturn("5556664444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_3)).thenReturn("5556664444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_3)).thenReturn(sub3Telmgr);
@@ -298,9 +302,9 @@
         when(info1.getSubscriptionId()).thenReturn(SUBID_1);
         when(info1.getDisplayName()).thenReturn(CARRIER_1);
         when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1));
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
 
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
 
         final CharSequence name =
@@ -310,6 +314,7 @@
         assertEquals(CARRIER_1, name);
     }
 
+    @Ignore
     @Test
     public void getUniqueDisplayName_identicalCarriers_correctNameReturned() {
         // Each subscription's default display name is unique.
@@ -324,8 +329,8 @@
         // Each subscription has a unique last 4 digits of the phone number.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -339,6 +344,7 @@
         assertEquals(CARRIER_1 + " 4444", name2);
     }
 
+    @Ignore
     @Test
     public void getUniqueDisplayName_phoneNumberIdentical_correctNameReturned() {
         // Each subscription's default display name is unique.
@@ -353,8 +359,8 @@
         // Both subscriptions have a the same 4 digits of the phone number.
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
         TelephonyManager sub2Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112224444");
-        when(sub2Telmgr.getLine1Number()).thenReturn("2223334444");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_2)).thenReturn("2223334444");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
         when(mTelMgr.createForSubscriptionId(SUBID_2)).thenReturn(sub2Telmgr);
 
@@ -377,7 +383,7 @@
         when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1));
 
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
 
         // Subscription id is different than the one returned by the subscription manager.
@@ -397,7 +403,7 @@
         when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1));
 
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
 
         final CharSequence name =
@@ -416,7 +422,7 @@
                 Arrays.asList(info1));
 
         TelephonyManager sub1Telmgr = mock(TelephonyManager.class);
-        when(sub1Telmgr.getLine1Number()).thenReturn("1112223333");
+        when(mSubMgr.getPhoneNumber(SUBID_1)).thenReturn("1112223333");
         when(mTelMgr.createForSubscriptionId(SUBID_1)).thenReturn(sub1Telmgr);
 
         SubscriptionInfo info2 = null;
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java
index e7a6af3..8396f1b 100644
--- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java
@@ -153,7 +153,6 @@
     @Test
     public void
     shouldShowBackupCallingForSub_crossSimDisabled_returnFalse() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         doReturn(false).when(mNetworkProviderBackupCallingGroup).isCrossSimEnabledByPlatform(
                 mContext, SUB_ID_1);
 
@@ -163,7 +162,6 @@
 
     @Test
     public void shouldBackupCallingForSub_crossSimEnabled_returnTrue() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         doReturn(true).when(mNetworkProviderBackupCallingGroup).isCrossSimEnabledByPlatform(
                 mContext, SUB_ID_1);
 
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java
index 660772e..9cd12fe 100644
--- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java
@@ -147,7 +147,6 @@
     @Test
     public void
     shouldShowWifiCallingForSub_wifiCallingDisabledWithWifiCallingNotReady_returnFalse() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         setWifiCallingEnabled(false);
         doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID);
 
@@ -157,7 +156,6 @@
 
     @Test
     public void shouldShowWifiCallingForSub_wifiCallingEnabledWithWifiCallingIsReady_returnTrue() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         setWifiCallingEnabled(true);
         doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID);
 
@@ -168,7 +166,6 @@
     @Test
     public void
     shouldShowWifiCallingForSub_wifiCallingDisabledWithNoActivityHandleIntent_returnFalse() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         buildPhoneAccountConfigureIntent(false);
         doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID);
         doReturn(mPhoneAccountHandle).when(mNetworkProviderWifiCallingGroup)
@@ -181,7 +178,6 @@
     @Test
     public void
     shouldShowWifiCallingForSub_wifiCallingEnabledWithActivityHandleIntent_returnTrue() {
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true);
         buildPhoneAccountConfigureIntent(true);
         doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID);
         doReturn(mPhoneAccountHandle).when(mNetworkProviderWifiCallingGroup)
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
index 6449c65..7d86018 100644
--- a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
@@ -122,10 +122,6 @@
 
         public TargetClass(NetworkSelectSettingsTest env) {
             mTestEnv = env;
-
-            Bundle bundle = new Bundle();
-            bundle.putInt(Settings.EXTRA_SUB_ID, SUB_ID);
-            setArguments(bundle);
         }
 
         @Override
@@ -184,6 +180,11 @@
         protected boolean enableAggregation(Context context) {
             return mTestEnv.mIsAggregationEnabled;
         }
+
+        @Override
+        protected int getSubId() {
+            return SUB_ID;
+        }
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/privacy/PrivacyDashboardActivityTest.java b/tests/unit/src/com/android/settings/privacy/PrivacyDashboardActivityTest.java
new file mode 100644
index 0000000..2365553
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privacy/PrivacyDashboardActivityTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.settings.privacy;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.content.Intent;
+import android.provider.DeviceConfig;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.settings.Settings;
+import com.android.settings.SettingsActivity;
+import com.android.settings.safetycenter.SafetyCenterStatus;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+
+@RunWith(AndroidJUnit4.class)
+public class PrivacyDashboardActivityTest {
+
+    private static final String DEFAULT_FRAGMENT_CLASSNAME = "DefaultFragmentClassname";
+
+    private Settings.PrivacyDashboardActivity mActivity;
+
+    @Before
+    public void setUp() {
+        DeviceConfig.resetToDefaults(android.provider.Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+        final Intent intent = new Intent();
+        intent.setAction(android.provider.Settings.ACTION_PRIVACY_SETTINGS);
+        intent.setClass(InstrumentationRegistry.getInstrumentation().getTargetContext(),
+                Settings.PrivacyDashboardActivity.class);
+        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, DEFAULT_FRAGMENT_CLASSNAME);
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            try {
+                mActivity =
+                        spy((Settings.PrivacyDashboardActivity) InstrumentationRegistry
+                                .getInstrumentation().newActivity(
+                                        getClass().getClassLoader(),
+                                        Settings.PrivacyDashboardActivity.class.getName(),
+                                        intent));
+            } catch (Exception e) {
+                throw new RuntimeException(e); // nothing to do
+            }
+        });
+        doNothing().when(mActivity).startActivity(any(Intent.class));
+    }
+
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(android.provider.Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @Test
+    public void onCreate_whenSafetyCenterEnabled_redirectsToSafetyCenter() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+
+        mActivity.handleSafetyCenterRedirection();
+
+        verify(mActivity).startActivity(intentCaptor.capture());
+        assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SAFETY_CENTER);
+    }
+
+    @Test
+    public void onCreate_whenSafetyCenterDisabled_doesntRedirectToSafetyCenter() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        mActivity.handleSafetyCenterRedirection();
+
+        verify(mActivity, times(0)).startActivity(any());
+    }
+}
diff --git a/tests/unit/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceControllerTest.java b/tests/unit/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..570df73
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privacy/TopLevelPrivacyEntryPreferenceControllerTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.settings.privacy;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.DeviceConfig;
+import android.provider.Settings;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.safetycenter.SafetyCenterStatus;
+import com.android.settings.security.TopLevelSecurityEntryPreferenceController;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public class TopLevelPrivacyEntryPreferenceControllerTest {
+
+    private static final String PREFERENCE_KEY = "top_level_privacy";
+
+    private TopLevelPrivacyEntryPreferenceController mTopLevelPrivacyEntryPreferenceController;
+
+    @Mock
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+
+        mTopLevelPrivacyEntryPreferenceController =
+                new TopLevelPrivacyEntryPreferenceController(mContext, PREFERENCE_KEY);
+    }
+
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterEnabled_returnsUnavailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelPrivacyEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSecurityEntryPreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterDisabled_returnsAvailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelPrivacyEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSecurityEntryPreferenceController.AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/safetycenter/SafetyCenterStatusTest.java b/tests/unit/src/com/android/settings/safetycenter/SafetyCenterStatusTest.java
new file mode 100644
index 0000000..f36fbe1
--- /dev/null
+++ b/tests/unit/src/com/android/settings/safetycenter/SafetyCenterStatusTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.settings.safetycenter;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.provider.DeviceConfig;
+import android.provider.Settings;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class SafetyCenterStatusTest {
+
+    @Before
+    public void setUp() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @Test
+    public void isEnabled_whenFlagTrue_returnsTrue() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+
+        assertThat(SafetyCenterStatus.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void isEnabled_whenFlagFalse_returnsFalse() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        assertThat(SafetyCenterStatus.isEnabled()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceControllerTest.java b/tests/unit/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..907fb99
--- /dev/null
+++ b/tests/unit/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceControllerTest.java
@@ -0,0 +1,134 @@
+/*
+ * 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.settings.safetycenter;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.verify;
+
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.DeviceConfig;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class TopLevelSafetyCenterEntryPreferenceControllerTest {
+
+    private static final String PREFERENCE_KEY = "top_level_safety_center";
+
+    private TopLevelSafetyCenterEntryPreferenceController
+            mTopLevelSafetyCenterEntryPreferenceController;
+    private Preference mPreference;
+
+    @Mock
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mPreference = new Preference(ApplicationProvider.getApplicationContext());
+        mPreference.setKey(PREFERENCE_KEY);
+
+        doNothing().when(mContext).startActivity(any(Intent.class));
+        mTopLevelSafetyCenterEntryPreferenceController =
+                new TopLevelSafetyCenterEntryPreferenceController(mContext, PREFERENCE_KEY);
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_forDifferentPreferenceKey_isNotHandled() {
+        Preference preference = new Preference(ApplicationProvider.getApplicationContext());
+        preference.setKey("some_other_preference");
+
+        boolean preferenceHandled =
+                mTopLevelSafetyCenterEntryPreferenceController.handlePreferenceTreeClick(
+                        preference);
+
+        assertThat(preferenceHandled).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_launchesIntendedIntent() {
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+
+        boolean preferenceHandled = mTopLevelSafetyCenterEntryPreferenceController
+                .handlePreferenceTreeClick(mPreference);
+
+        assertThat(preferenceHandled).isTrue();
+        verify(mContext).startActivity(intentCaptor.capture());
+        assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SAFETY_CENTER);
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_onStartActivityThrows_returnsFalse() {
+        doThrow(ActivityNotFoundException.class)
+                .when(mContext).startActivity(any(Intent.class));
+
+        boolean preferenceHandled = mTopLevelSafetyCenterEntryPreferenceController
+                .handlePreferenceTreeClick(mPreference);
+
+        assertThat(preferenceHandled).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterDisabled_returnsUnavailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelSafetyCenterEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSafetyCenterEntryPreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterEnabled_returnsAvailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelSafetyCenterEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSafetyCenterEntryPreferenceController.AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
index 3bda96e..0406616 100644
--- a/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
+++ b/tests/unit/src/com/android/settings/security/SecurityDashboardActivityTest.java
@@ -18,20 +18,29 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Intent;
+import android.provider.DeviceConfig;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import com.android.settings.Settings;
 import com.android.settings.SettingsActivity;
+import com.android.settings.safetycenter.SafetyCenterStatus;
 import com.android.settings.testutils.FakeFeatureFactory;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.MockitoAnnotations;
 
 @RunWith(AndroidJUnit4.class)
@@ -48,6 +57,8 @@
         MockitoAnnotations.initMocks(this);
         FakeFeatureFactory mFeatureFactory = FakeFeatureFactory.setupForTest();
         mSecuritySettingsFeatureProvider = mFeatureFactory.getSecuritySettingsFeatureProvider();
+        DeviceConfig.resetToDefaults(android.provider.Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
         mDefaultIntent = new Intent();
         mDefaultIntent.setAction(android.provider.Settings.ACTION_SECURITY_SETTINGS);
         mDefaultIntent.setClass(InstrumentationRegistry.getInstrumentation().getTargetContext(),
@@ -56,15 +67,22 @@
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
             try {
                 mActivity =
-                        (Settings.SecurityDashboardActivity) InstrumentationRegistry
+                        spy((Settings.SecurityDashboardActivity) InstrumentationRegistry
                                 .getInstrumentation().newActivity(
                                         getClass().getClassLoader(),
                                         Settings.SecurityDashboardActivity.class.getName(),
-                                        mDefaultIntent);
+                                        mDefaultIntent));
             } catch (Exception e) {
                 throw new RuntimeException(e); // nothing to do
             }
         });
+        doNothing().when(mActivity).startActivity(any(Intent.class));
+    }
+
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(android.provider.Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
     }
 
     @Test
@@ -104,4 +122,32 @@
 
         assertThat(mActivity.isValidFragment(ALTERNATIVE_FRAGMENT_CLASSNAME)).isTrue();
     }
+
+    @Test
+    public void onCreate_whenSafetyCenterEnabled_redirectsToSafetyCenter() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+
+        mActivity.handleSafetyCenterRedirection();
+
+        verify(mActivity).startActivity(intentCaptor.capture());
+        assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SAFETY_CENTER);
+    }
+
+    @Test
+    public void onCreate_whenSafetyCenterDisabled_doesntRedirectToSafetyCenter() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        mActivity.handleSafetyCenterRedirection();
+
+        verify(mActivity, times(0)).startActivity(any());
+    }
 }
diff --git a/tests/unit/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java b/tests/unit/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
index a9acd2a..7e83ca7 100644
--- a/tests/unit/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
@@ -25,14 +25,18 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.provider.DeviceConfig;
+import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.SettingsActivity;
+import com.android.settings.safetycenter.SafetyCenterStatus;
 import com.android.settings.testutils.FakeFeatureFactory;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -60,6 +64,9 @@
         mFeatureFactory = FakeFeatureFactory.setupForTest();
         mSecuritySettingsFeatureProvider = mFeatureFactory.getSecuritySettingsFeatureProvider();
 
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+
         mPreference = new Preference(ApplicationProvider.getApplicationContext());
         mPreference.setKey(PREFERENCE_KEY);
 
@@ -68,6 +75,12 @@
                 new TopLevelSecurityEntryPreferenceController(mContext, PREFERENCE_KEY);
     }
 
+    @After
+    public void tearDown() {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_PRIVACY);
+    }
+
     @Test
     public void handlePreferenceTreeClick_forDifferentPreferenceKey_isNotHandled() {
         Preference preference = new Preference(ApplicationProvider.getApplicationContext());
@@ -121,4 +134,28 @@
 
         assertThat(preferenceHandled).isFalse();
     }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterEnabled_returnsUnavailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(true),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelSecurityEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSecurityEntryPreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_whenSafetyCenterDisabled_returnsAvailable() {
+        DeviceConfig.setProperty(
+                DeviceConfig.NAMESPACE_PRIVACY,
+                SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED,
+                /* value = */ Boolean.toString(false),
+                /* makeDefault = */ false);
+
+        assertThat(mTopLevelSecurityEntryPreferenceController.getAvailabilityStatus())
+                .isEqualTo(TopLevelSecurityEntryPreferenceController.AVAILABLE);
+    }
 }