diff --git a/DEPS b/DEPS
index f8f83dc8..2bf04fe9 100644
--- a/DEPS
+++ b/DEPS
@@ -299,15 +299,15 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '956fd8b14e2205fa33f36de216e6231314e67d03',
+  'skia_revision': 'f42bb59753feff1eb831991ad29075150bbec626',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'd39bd40aa3585340bba5d178b96ec4a7ee597a50',
+  'v8_revision': '6cd9d55b3be68f3ba3ad48c83f878a156bc0430a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'c1e806dec7a183ef7d85d9345d81dd0c7b1b5e93',
+  'angle_revision': '275745ff8b294d025f3dac0eb431998442f600b8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -319,7 +319,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
-  'boringssl_revision': 'c5795a328880eadb879088fc59cd0087edc8dc20',
+  'boringssl_revision': '9295969e1dad2c31d0d99481734c1c68dcbc6403',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Fuchsia sdk
   # and whatever else without interference from each other.
@@ -391,7 +391,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '137e867406255293753ba0fa2f8cd95f80b01771',
+  'devtools_frontend_revision': 'c67d1c724ab9dcf466346f2e95b92bd0012982bc',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -523,7 +523,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling llvm-libc
   # and whatever else without interference from each other.
-  'compiler_rt_revision': 'a6f7c1ae19c301452a66fdfeceef4d7c47d86107',
+  'compiler_rt_revision': '689e2e2268b19ff47d6a7e3a0cedd6d5ac19d0a7',
 
   # If you change this, also update the libc++ revision in
   # //buildtools/deps_revisions.gni.
@@ -1508,7 +1508,7 @@
 
   'src/clank': {
     'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' +
-    'c3f13e04659dc7e088022d2ea2478a036ea41011',
+    '180ea8ed2b2e73fb52d4201a021d0acd2801c05b',
     'condition': 'checkout_android and checkout_src_internal',
   },
 
@@ -2548,7 +2548,7 @@
     Var('pdfium_git') + '/pdfium.git' + '@' +  Var('pdfium_revision'),
 
   'src/third_party/perfetto':
-    Var('chromium_git') + '/external/github.com/google/perfetto.git' + '@' + '82c60ea0d2b453aded71857c93b9e6a2637da79b',
+    Var('chromium_git') + '/external/github.com/google/perfetto.git' + '@' + 'dd35b295cd359ba094404218414955f961a0d6ae',
 
   'src/base/tracing/test/data': {
     'bucket': 'perfetto',
@@ -2921,7 +2921,7 @@
     Var('chromium_git') + '/webpagereplay.git' + '@' + Var('webpagereplay_revision'),
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '5099aef700c439ca6091e33333664fd7fc725a04',
+    Var('webrtc_git') + '/src.git' + '@' + '447950dc42025d50e9789a022bbed3a0c8a74be0',
 
   # Wuffs' canonical repository is at github.com/google/wuffs, but we use
   # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file.
@@ -3054,7 +3054,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'Du_qU4LYkmOmYz9fCLtJP-LDwneiTNibWtTfhnIRS6oC',
+        'version': 'm6WVRkjanhUmo2Kyb9L7sr65FDgQFOHT7jXABLFoTNAC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -4451,7 +4451,7 @@
 
   'src/chrome/browser/glic/resources/internal': {
       'url': Var('chrome_git') + '/chrome/browser/glic/resources/internal.git' + '@' +
-        '3784a743ccebd82808a50e14e99db28643e95bac',
+        'f236f97eebe6c78b5cec74e6c82f7ecabc4cac85',
       'condition': 'checkout_src_internal',
   },
 
@@ -4707,7 +4707,7 @@
 
   'src/ios_internal':  {
       'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' +
-        '91cadb79a847230f66a14711e00f670580629fbc',
+        '6d082702c7c77c8dc97cdf1a572a852b53e569df',
       'condition': 'checkout_ios and checkout_src_internal',
   },
 
diff --git a/base/android/pre_freeze_background_memory_trimmer.cc b/base/android/pre_freeze_background_memory_trimmer.cc
index e01b269..88b6a8ff 100644
--- a/base/android/pre_freeze_background_memory_trimmer.cc
+++ b/base/android/pre_freeze_background_memory_trimmer.cc
@@ -50,7 +50,11 @@
 
 // This constant is chosen arbitrarily, to allow time for the background tasks
 // to finish running BEFORE collecting metrics.
-const base::TimeDelta kDelayForMetrics = base::Seconds(2);
+constexpr base::TimeDelta kDelayForMetrics = base::Seconds(2);
+
+// Based on UMA data, >99.5% of the compaction should take < 6s, so 10s should
+// be more than enough.
+constexpr base::TimeDelta kCompactionTimeout = base::Seconds(10);
 
 uint64_t BytesToMiB(uint64_t v) {
   return v / 1024 / 1024;
@@ -508,6 +512,13 @@
 }
 
 // static
+bool PreFreezeBackgroundMemoryTrimmer::TimeoutExceeded() {
+  base::AutoLock locker(lock());
+  return Instance().compaction_last_started_ + kCompactionTimeout <=
+         base::TimeTicks::Now();
+}
+
+// static
 bool PreFreezeBackgroundMemoryTrimmer::ShouldContinueCompaction(
     base::TimeTicks compaction_triggered_at) {
   base::AutoLock locker(lock());
@@ -518,6 +529,14 @@
     std::unique_ptr<CompactionState> state,
     scoped_refptr<CompactionMetric> metric) {
   TRACE_EVENT0("base", "MaybePostCompactionTask");
+  // Compaction is taking too long, so cancel it. This happens in practice in
+  // the field sometimes, according to UMA data.
+  if (TimeoutExceeded()) {
+    MaybeCancelCompaction(CompactCancellationReason::kTimeout);
+    // We do not return here, despite the fact that we will not be doing any
+    // more compaction, in order to run |FinishCompaction| below.
+  }
+
   if (ShouldContinueCompaction(*state) && !state->regions_.empty()) {
     auto task_runner = state->task_runner_;
     task_runner->PostDelayedTask(
@@ -548,11 +567,13 @@
 
 void PreFreezeBackgroundMemoryTrimmer::StartCompaction(
     std::unique_ptr<CompactionState> state) {
-  scoped_refptr<CompactionMetric> metric = state->MakeCompactionMetric();
-  TRACE_EVENT0("base", "StartCompaction");
-  base::trace_event::EmitNamedTrigger("start-self-compaction");
+  scoped_refptr<CompactionMetric> metric;
   {
     base::AutoLock locker(lock());
+    compaction_last_started_ = base::TimeTicks::Now();
+    metric = state->MakeCompactionMetric(compaction_last_started_);
+    TRACE_EVENT0("base", "StartCompaction");
+    base::trace_event::EmitNamedTrigger("start-self-compaction");
     process_compacted_metadata_.emplace(
         "PreFreezeBackgroundMemoryTrimmer.ProcessCompacted",
         /*is_compacted=*/1, base::SampleMetadataScope::kProcess);
@@ -603,7 +624,7 @@
   if (compaction_last_cancelled_ < compaction_last_triggered_ &&
       compaction_last_finished_ < compaction_last_triggered_) {
     UmaHistogramEnumeration(
-        "Memory.RunningOrSelfCompact.Renderer.CancellationReason",
+        "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason",
         cancellation_reason);
   }
   compaction_last_finished_ = compaction_last_cancelled_ =
@@ -650,10 +671,10 @@
 }
 
 scoped_refptr<PreFreezeBackgroundMemoryTrimmer::CompactionMetric>
-PreFreezeBackgroundMemoryTrimmer::SelfCompactionState::MakeCompactionMetric()
-    const {
-  return MakeRefCounted<CompactionMetric>(
-      "Memory.SelfCompact2.Renderer.", triggered_at_, base::TimeTicks::Now());
+PreFreezeBackgroundMemoryTrimmer::SelfCompactionState::MakeCompactionMetric(
+    base::TimeTicks started_at) const {
+  return MakeRefCounted<CompactionMetric>("Memory.SelfCompact2.Renderer.",
+                                          triggered_at_, started_at);
 }
 
 PreFreezeBackgroundMemoryTrimmer::RunningCompactionState::
@@ -686,10 +707,10 @@
 }
 
 scoped_refptr<PreFreezeBackgroundMemoryTrimmer::CompactionMetric>
-PreFreezeBackgroundMemoryTrimmer::RunningCompactionState::MakeCompactionMetric()
-    const {
-  return MakeRefCounted<CompactionMetric>(
-      "Memory.RunningCompact.Renderer.", triggered_at_, base::TimeTicks::Now());
+PreFreezeBackgroundMemoryTrimmer::RunningCompactionState::MakeCompactionMetric(
+    base::TimeTicks started_at) const {
+  return MakeRefCounted<CompactionMetric>("Memory.RunningCompact.Renderer.",
+                                          triggered_at_, started_at);
 }
 
 void PreFreezeBackgroundMemoryTrimmer::CompactionState::MaybeReadProcMaps() {
diff --git a/base/android/pre_freeze_background_memory_trimmer.h b/base/android/pre_freeze_background_memory_trimmer.h
index 74ceddf5..d44791b 100644
--- a/base/android/pre_freeze_background_memory_trimmer.h
+++ b/base/android/pre_freeze_background_memory_trimmer.h
@@ -41,7 +41,8 @@
   enum class CompactCancellationReason {
     kAppFreezer,
     kPageResumed,
-    kMaxValue = kPageResumed
+    kTimeout,
+    kMaxValue = kTimeout
   };
 
   static PreFreezeBackgroundMemoryTrimmer& Instance();
@@ -127,7 +128,7 @@
   // If we are currently running self compaction, cancel it. If it was running,
   // record a metric with the reason for the cancellation.
   static void MaybeCancelCompaction(
-      CompactCancellationReason cancellation_reason);
+      CompactCancellationReason cancellation_reason) LOCKS_EXCLUDED(lock());
 
   static void SetSupportsModernTrimForTesting(bool is_supported);
   static void ClearMetricsForTesting() LOCKS_EXCLUDED(lock());
@@ -166,7 +167,9 @@
   friend class PreFreezeSelfCompactionTestWithParam;
   FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTestWithParam, Disabled);
   FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTestWithParam, Cancel);
+  FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTestWithParam, TimeoutCancel);
   FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTest, NotCanceled);
+  FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTest, SimpleCancel);
   FRIEND_TEST_ALL_PREFIXES(PreFreezeSelfCompactionTest, OnSelfFreezeCancel);
 
   // We use our own implementation here, based on |PostCancelableDelayedTask|,
@@ -275,7 +278,8 @@
     virtual bool IsFeatureEnabled() const = 0;
     virtual std::string GetMetricName(std::string_view name) const = 0;
     void MaybeReadProcMaps();
-    virtual scoped_refptr<CompactionMetric> MakeCompactionMetric() const = 0;
+    virtual scoped_refptr<CompactionMetric> MakeCompactionMetric(
+        base::TimeTicks started_at) const = 0;
     virtual base::TimeDelta GetDelayAfterPreFreezeTasks() const = 0;
 
     scoped_refptr<SequencedTaskRunner> task_runner_;
@@ -294,7 +298,8 @@
     bool IsFeatureEnabled() const override;
     base::TimeDelta GetDelayAfterPreFreezeTasks() const override;
     std::string GetMetricName(std::string_view name) const override;
-    scoped_refptr<CompactionMetric> MakeCompactionMetric() const override;
+    scoped_refptr<CompactionMetric> MakeCompactionMetric(
+        base::TimeTicks started_at) const override;
   };
 
   class RunningCompactionState final : public CompactionState {
@@ -307,7 +312,8 @@
     bool IsFeatureEnabled() const override;
     base::TimeDelta GetDelayAfterPreFreezeTasks() const override;
     std::string GetMetricName(std::string_view name) const override;
-    scoped_refptr<CompactionMetric> MakeCompactionMetric() const override;
+    scoped_refptr<CompactionMetric> MakeCompactionMetric(
+        base::TimeTicks started_at) const override;
   };
 
   PreFreezeBackgroundMemoryTrimmer();
@@ -338,6 +344,7 @@
       LOCKS_EXCLUDED(lock());
   static bool ShouldContinueCompaction(base::TimeTicks compaction_triggered_at)
       LOCKS_EXCLUDED(lock());
+  static bool TimeoutExceeded();
 
   static std::optional<uint64_t> CompactMemory(
       std::vector<debug::MappedMemoryRegion>* regions,
@@ -404,6 +411,10 @@
   // When we last triggered self compaction. Used to record metrics.
   base::TimeTicks compaction_last_triggered_ GUARDED_BY(lock()) =
       base::TimeTicks::Min();
+  // When we last started self compaction. Used to know if we should cancel
+  // compaction due to it taking too long.
+  base::TimeTicks compaction_last_started_ GUARDED_BY(lock()) =
+      base::TimeTicks::Min();
   // When we last finished self compaction (either successfully, or from
   // being cancelled). Used to record metrics.
   base::TimeTicks compaction_last_finished_ GUARDED_BY(lock()) =
diff --git a/base/android/pre_freeze_background_memory_trimmer_unittest.cc b/base/android/pre_freeze_background_memory_trimmer_unittest.cc
index 198380b7..5bf5cdd 100644
--- a/base/android/pre_freeze_background_memory_trimmer_unittest.cc
+++ b/base/android/pre_freeze_background_memory_trimmer_unittest.cc
@@ -913,7 +913,7 @@
   // This metric is used for both self compaction and running compaction, with
   // the same prefix for both.
   histograms_.ExpectTotalCount(
-      "Memory.RunningOrSelfCompact.Renderer.CancellationReason", 0);
+      "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason", 0);
 
   // We want the triggered time to be slightly after the last cancelled time;
   // checks for whether we should cancel depend on this.
@@ -957,7 +957,7 @@
   EXPECT_EQ(histograms_.GetTotalCountsForPrefix("Memory.RunningCompact").size(),
             0);
   histograms_.ExpectTotalCount(
-      "Memory.RunningOrSelfCompact.Renderer.CancellationReason", 1);
+      "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason", 1);
 
   // Still only expect it to be recorded once, because we were not running the
   // second time we tried to cancel.
@@ -965,13 +965,89 @@
       PreFreezeBackgroundMemoryTrimmer::CompactCancellationReason::
           kPageResumed);
   histograms_.ExpectTotalCount(
-      "Memory.RunningOrSelfCompact.Renderer.CancellationReason", 1);
+      "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason", 1);
 
   for (size_t i = 1; i < 5; i++) {
     Unmap(addrs[i], i * base::GetPageSize());
   }
 }
 
+TEST_P(PreFreezeSelfCompactionTestWithParam, TimeoutCancel) {
+  // MADV_PAGEOUT is only supported starting from Linux 5.4. So, on devices
+  // don't support it, we bail out early. This is a known problem on some 32
+  // bit devices.
+  if (!PreFreezeBackgroundMemoryTrimmer::CompactionIsSupported()) {
+    GTEST_SKIP() << "No kernel support";
+  }
+
+  ASSERT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 0u);
+
+  std::array<void*, 5> addrs;
+  for (size_t i = 1; i < 5; i++) {
+    addrs[i] = Map(i * base::GetPageSize());
+    ASSERT_NE(addrs[i], MAP_FAILED);
+  }
+
+  // This metric is used for both self compaction and running compaction, with
+  // the same prefix for both.
+  histograms_.ExpectTotalCount(
+      "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason", 0);
+
+  const auto triggered_at = base::TimeTicks::Now();
+  auto state = GetState(triggered_at);
+  GetMappedMemoryRegions(&state->regions_);
+  ASSERT_EQ(state->regions_.size(), 4u);
+
+  {
+    base::AutoLock locker(PreFreezeBackgroundMemoryTrimmer::lock());
+    PreFreezeBackgroundMemoryTrimmer::Instance().compaction_last_triggered_ =
+        triggered_at;
+  }
+  PreFreezeBackgroundMemoryTrimmer::Instance().StartCompaction(
+      std::move(state));
+
+  EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u);
+
+  // We should have 4 sections here, based on the sizes mapped above.
+  // |StartCompaction| doesn't run right away, but rather schedules a task.
+  // Because of the cancellation, we expect only three tasks to run. The first
+  // two should compact memory, the last should be cancelled below when we
+  // advance the clock.
+  for (size_t i = 0; i < 1; i++) {
+    EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u);
+    task_environment_.FastForwardBy(
+        task_environment_.NextMainThreadPendingTaskDelay());
+  }
+
+  EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u);
+
+  // Advance the clock here, to simulate a hang. This will not run any tasks.
+  task_environment_.AdvanceClock(base::Seconds(10));
+
+  task_environment_.RunUntilIdle();
+
+  for (size_t i = 1; i < 3; i++) {
+    size_t len = i * base::GetPageSize();
+    EXPECT_EQ(CountResidentPagesInRange(addrs[i], len), i);
+    Unmap(addrs[i], len);
+  }
+
+  for (size_t i = 3; i < 5; i++) {
+    size_t len = i * base::GetPageSize();
+    // Compaction is flakey in tests sometimes, so check LE here.
+    EXPECT_LE(CountResidentPagesInRange(addrs[i], len), i);
+    Unmap(addrs[i], len);
+  }
+
+  histograms_.ExpectTotalCount(
+      "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason", 1);
+
+  // Bucket #2 is "Timeout".
+  EXPECT_THAT(histograms_.GetAllSamples(
+                  "Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason"),
+              BucketsAre(Bucket(0, 0), Bucket(1, 0), Bucket(2, 1)));
+}
+
 TEST_F(PreFreezeSelfCompactionTest, NotCanceled) {
   // MADV_PAGEOUT is only supported starting from Linux 5.4. So, on devices
   // don't support it, we bail out early. This is a known problem on some 32
diff --git a/base/containers/map_util.h b/base/containers/map_util.h
index fe7d8b1..70ede354e 100644
--- a/base/containers/map_util.h
+++ b/base/containers/map_util.h
@@ -20,7 +20,7 @@
 
 // Returns a pointer to the const value associated with the given key if it
 // exists, or null otherwise.
-template <typename Map, typename Key>
+template <typename Map, typename Key = Map::key_type>
 constexpr const internal::MappedType<Map>* FindOrNull(const Map& map,
                                                       const Key& key) {
   auto it = map.find(key);
@@ -29,7 +29,7 @@
 
 // Returns a pointer to the value associated with the given key if it exists, or
 // null otherwise.
-template <typename Map, typename Key>
+template <typename Map, typename Key = Map::key_type>
 constexpr internal::MappedType<Map>* FindOrNull(Map& map, const Key& key) {
   auto it = map.find(key);
   return it != map.end() ? &it->second : nullptr;
@@ -42,7 +42,7 @@
 // This function does not distinguish between a missing key and a key mapped
 // to a null value.
 template <typename Map,
-          typename Key,
+          typename Key = Map::key_type,
           typename MappedElementType =
               std::pointer_traits<internal::MappedType<Map>>::element_type>
 constexpr const MappedElementType* FindPtrOrNull(const Map& map,
@@ -58,7 +58,7 @@
 // This function does not distinguish between a missing key and a key mapped
 // to a null value.
 template <typename Map,
-          typename Key,
+          typename Key = Map::key_type,
           typename MappedElementType =
               std::pointer_traits<internal::MappedType<Map>>::element_type>
 constexpr MappedElementType* FindPtrOrNull(Map& map, const Key& key) {
diff --git a/base/containers/map_util_unittest.cc b/base/containers/map_util_unittest.cc
index f187833a..c743fca 100644
--- a/base/containers/map_util_unittest.cc
+++ b/base/containers/map_util_unittest.cc
@@ -36,6 +36,19 @@
 
   EXPECT_THAT(FindOrNull(mapping, kKey), Pointee(Eq(kValue)));
   EXPECT_EQ(FindOrNull(mapping, kMissingKey), nullptr);
+
+  // The following should be able to infer the type of the key from the map's
+  // type.
+  base::flat_map<std::pair<int, std::string>, std::string> pair_mapping;
+  EXPECT_EQ(FindOrNull(pair_mapping, {3, "foo"}), nullptr);
+
+  // Homogeneous keys are supported.
+  std::pair<int, std::string> homogeneous_key(3, "bar");
+  EXPECT_EQ(FindOrNull(pair_mapping, homogeneous_key), nullptr);
+
+  // Heterogenous keys are supported.
+  std::pair<int, const char*> heterogenous_key(3, "bar");
+  EXPECT_EQ(FindOrNull(pair_mapping, heterogenous_key), nullptr);
 }
 
 TEST(MapUtilTest, FindPtrOrNullForPointers) {
@@ -46,6 +59,19 @@
   EXPECT_THAT(FindPtrOrNull(mapping, kKey),
               AllOf(Eq(val.get()), Pointee(Eq(kValue))));
   EXPECT_EQ(FindPtrOrNull(mapping, kMissingKey), nullptr);
+
+  // The following should be able to infer the type of the key from the map's
+  // type.
+  base::flat_map<std::pair<int, std::string>, std::string*> pair_mapping;
+  EXPECT_EQ(FindPtrOrNull(pair_mapping, {3, "foo"}), nullptr);
+
+  // Homogeneous keys are supported.
+  std::pair<int, std::string> homogeneous_key(3, "bar");
+  EXPECT_EQ(FindPtrOrNull(pair_mapping, homogeneous_key), nullptr);
+
+  // Heterogenous keys are supported.
+  std::pair<int, const char*> heterogenous_key(3, "bar");
+  EXPECT_EQ(FindPtrOrNull(pair_mapping, heterogenous_key), nullptr);
 }
 
 TEST(MapUtilTest, FindPtrOrNullForPointerLikeValues) {
diff --git a/base/synchronization/condition_variable.h b/base/synchronization/condition_variable.h
index 2fecc44b..17144f0 100644
--- a/base/synchronization/condition_variable.h
+++ b/base/synchronization/condition_variable.h
@@ -91,11 +91,6 @@
 
   ~ConditionVariable();
 
-#if BUILDFLAG(IS_APPLE)
-  // Initializes features for this class. See `base::features::Init()`.
-  static void InitializeFeatures();
-#endif
-
   // Wait() releases the caller's critical section atomically as it starts to
   // sleep, and the reacquires it when it is signaled. The wait functions are
   // susceptible to spurious wakeups. (See usage note 1 for more details.)
diff --git a/base/trace_event/trace_event_impl.h b/base/trace_event/trace_event_impl.h
index 64d7059..a5b5efc 100644
--- a/base/trace_event/trace_event_impl.h
+++ b/base/trace_event/trace_event_impl.h
@@ -47,9 +47,6 @@
 
 class BASE_EXPORT TraceEvent {
  public:
-  // TODO(crbug.com/40599662): Remove once all users have been updated.
-  using TraceValue = base::trace_event::TraceValue;
-
   TraceEvent();
 
   TraceEvent(PlatformThreadId thread_id,
diff --git a/base/trace_event/traced_value.cc b/base/trace_event/traced_value.cc
index f5ace9f..15358de3 100644
--- a/base/trace_event/traced_value.cc
+++ b/base/trace_event/traced_value.cc
@@ -276,7 +276,7 @@
         }
 
         case kTypeBool: {
-          TraceEvent::TraceValue json_value;
+          TraceValue json_value;
           CHECK(it.ReadBool(&json_value.as_bool));
           maybe_append_key_name(state_stack[current_state_index], &it, out);
           json_value.AppendAsJSON(TRACE_VALUE_TYPE_BOOL, out);
@@ -287,14 +287,14 @@
           int value;
           CHECK(it.ReadInt(&value));
           maybe_append_key_name(state_stack[current_state_index], &it, out);
-          TraceEvent::TraceValue json_value;
+          TraceValue json_value;
           json_value.as_int = value;
           json_value.AppendAsJSON(TRACE_VALUE_TYPE_INT, out);
           break;
         }
 
         case kTypeDouble: {
-          TraceEvent::TraceValue json_value;
+          TraceValue json_value;
           CHECK(it.ReadDouble(&json_value.as_double));
           maybe_append_key_name(state_stack[current_state_index], &it, out);
           json_value.AppendAsJSON(TRACE_VALUE_TYPE_DOUBLE, out);
@@ -305,7 +305,7 @@
           std::string value;
           CHECK(it.ReadString(&value));
           maybe_append_key_name(state_stack[current_state_index], &it, out);
-          TraceEvent::TraceValue json_value;
+          TraceValue json_value;
           json_value.as_string = value.c_str();
           json_value.AppendAsJSON(TRACE_VALUE_TYPE_STRING, out);
           break;
@@ -398,7 +398,7 @@
         } break;
 
         case kTypeDouble: {
-          TraceEvent::TraceValue trace_value;
+          TraceValue trace_value;
           CHECK(it.ReadDouble(&trace_value.as_double));
           Value base_value;
           if (!std::isfinite(trace_value.as_double)) {
diff --git a/build/config/android/build_vars.gni b/build/config/android/build_vars.gni
index f394dfc..84f80eb 100644
--- a/build/config/android/build_vars.gni
+++ b/build/config/android/build_vars.gni
@@ -18,7 +18,6 @@
     android_sdk_platform_version = android_sdk_platform_version
     android_tool_prefix = rebase_path(android_tool_prefix, root_build_dir)
     default_min_sdk_version = default_min_sdk_version
-    final_android_sdk = final_android_sdk
 
     if (defined(android_secondary_abi_cpu)) {
       android_secondary_abi_toolchain =
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index 85f12d7..59374468 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -161,11 +161,6 @@
     public_android_sdk = true
   }
 
-  # For use downstream when we are building with preview Android SDK
-  if (!defined(final_android_sdk)) {
-    final_android_sdk = public_android_sdk
-  }
-
   if (!defined(default_lint_android_sdk_root)) {
     # Purposefully repeated so that downstream can change
     # default_android_sdk_root without changing lint version.
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 0a5e7a1..c0541b8 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -2981,10 +2981,10 @@
         # instructions are merged.
         # See https://crbug.com/415272777.
         "-mllvm",
-        "-pick-merged-source-locations"
+        "-pick-merged-source-locations",
       ]
 
-      rustflags = [ "-Cllvm-args=-pick-merged-source-locations"]
+      rustflags = [ "-Cllvm-args=-pick-merged-source-locations" ]
     } else {
       cflags = [ "/Zi" ]  # Produce PDB file, no edit and continue.
     }
@@ -3000,7 +3000,7 @@
     configs += [ ":win_pdbaltpath" ]
   } else {
     cflags = []
-    if (is_mac && enable_dsyms) {
+    if (is_apple && enable_dsyms) {
       # If generating dSYMs, specify -fno-standalone-debug. This was
       # originally specified for https://crbug.com/479841 because dsymutil
       # could not handle a 4GB dSYM file. But dsymutil from Xcodes prior to
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index a2d09d2..8d1533a 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -1081,13 +1081,15 @@
     for (auto [element_id, _] :
          raster_source_->GetDisplayItemList()->raster_inducing_scrolls()) {
       // The transform node has the realized scroll offset and snap amount,
-      // and should be used for rendering.
+      // and should be used for rendering. A scroll node without a transform
+      // node means the scroller is not painted, so it doesn't matter.
       const auto* scroll_node = scroll_tree.FindNodeFromElementId(element_id);
       CHECK(scroll_node);
-      const auto* transform = transform_tree.Node(scroll_node->transform_id);
-      CHECK(transform);
-      map[element_id] =
-          gfx::PointAtOffsetFromOrigin(-transform->to_parent.To2dTranslation());
+      if (const auto* transform =
+              transform_tree.Node(scroll_node->transform_id)) {
+        map[element_id] = gfx::PointAtOffsetFromOrigin(
+            -transform->to_parent.To2dTranslation());
+      }
     }
   }
   return map;
diff --git a/cc/paint/oop_pixeltest.cc b/cc/paint/oop_pixeltest.cc
index 96902c3..b606655c 100644
--- a/cc/paint/oop_pixeltest.cc
+++ b/cc/paint/oop_pixeltest.cc
@@ -308,26 +308,33 @@
          "TestLabel"},
         gpu::kNullSurfaceHandle);
     EXPECT_TRUE(client_shared_image->mailbox().Verify());
-    ri->WaitSyncTokenCHROMIUM(sii->GenUnverifiedSyncToken().GetConstData());
 
     return client_shared_image;
   }
 
   void UploadPixels(gpu::raster::RasterInterface* ri,
-                    const gpu::Mailbox& mailbox,
+                    const scoped_refptr<gpu::ClientSharedImage>& shared_image,
                     const SkImageInfo& info,
                     const SkBitmap& bitmap) {
-    ri->WritePixels(mailbox, /*dst_x_offset=*/0, /*dst_y_offset=*/0,
+    auto ri_access = shared_image->BeginRasterAccess(
+        ri, shared_image->creation_sync_token(), /*readonly=*/false);
+    ri->WritePixels(shared_image->mailbox(), /*dst_x_offset=*/0,
+                    /*dst_y_offset=*/0,
                     /*texture_target=*/0,
                     SkPixmap(info, bitmap.getPixels(), info.minRowBytes()));
     EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
+    gpu::RasterScopedAccess::EndAccess(std::move(ri_access));
   }
 
-  void UploadPixelsYUV(gpu::raster::RasterInterface* ri,
-                       const gpu::Mailbox& mailbox,
-                       const SkYUVAPixmaps& yuv_pixmap) {
-    ri->WritePixelsYUV(mailbox, yuv_pixmap);
+  void UploadPixelsYUV(
+      gpu::raster::RasterInterface* ri,
+      const scoped_refptr<gpu::ClientSharedImage>& shared_image,
+      const SkYUVAPixmaps& yuv_pixmap) {
+    auto ri_access = shared_image->BeginRasterAccess(
+        ri, shared_image->creation_sync_token(), /*readonly=*/false);
+    ri->WritePixelsYUV(shared_image->mailbox(), yuv_pixmap);
     EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
+    gpu::RasterScopedAccess::EndAccess(std::move(ri_access));
   }
 
   // Verifies |actual| matches the expected PNG image.
@@ -1348,8 +1355,7 @@
   scoped_refptr<gpu::ClientSharedImage> src_client_si = CreateClientSharedImage(
       ri, sii, options, viz::SinglePlaneFormat::kRGBA_8888);
 
-  UploadPixels(ri, src_client_si->mailbox(), expected_bitmap.info(),
-               expected_bitmap);
+  UploadPixels(ri, src_client_si, expected_bitmap.info(), expected_bitmap);
 
   auto src_paint_image =
       PaintImageBuilder::WithDefault()
@@ -2664,7 +2670,7 @@
       SkImageInfo::MakeN32Premul(dest_size.width(), dest_size.height()),
       expected_pixels.data(), dest_size.width() * sizeof(SkColor));
 
-  UploadPixels(ri, dest_client_si->mailbox(), expected.info(), expected);
+  UploadPixels(ri, dest_client_si, expected.info(), expected);
 
   SkBitmap actual =
       ReadbackMailbox(ri, dest_client_si->mailbox(), options.resource_size);
@@ -2797,7 +2803,7 @@
       SkYUVAPixmaps::FromExternalPixmaps(yuv_info, pixmaps);
 
   // Upload initial Y+U+V planes and convert to RGB.
-  UploadPixelsYUV(ri, yuv_client_si->mailbox(), yuv_pixmap);
+  UploadPixelsYUV(ri, yuv_client_si, yuv_pixmap);
 
   ri->CopySharedImage(yuv_client_si->mailbox(), dest_client_si->mailbox(), 0, 0,
                       0, 0, options.resource_size.width(),
@@ -2878,7 +2884,7 @@
       SkYUVAPixmaps::FromExternalPixmaps(yuv_info, pixmaps);
 
   // Upload initial Y+UV planes and convert to RGB.
-  UploadPixelsYUV(ri, y_uv_client_si->mailbox(), yuv_pixmap);
+  UploadPixelsYUV(ri, y_uv_client_si, yuv_pixmap);
 
   ri->CopySharedImage(y_uv_client_si->mailbox(), dest_client_si->mailbox(), 0,
                       0, 0, 0, options.resource_size.width(),
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index b54ad77b0..98e8b65 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -3109,8 +3109,12 @@
     auto display_color_spaces = GetDisplayColorSpaces();
     for (auto& request : active_tree_->TakeViewTransitionRequests(
              /*should_set_needs_update_draw_properties=*/true)) {
-      metadata.transition_directives.push_back(request->ConstructDirective(
-          view_transition_element_map, display_color_spaces));
+      if (resourceless_software_draw_) {
+        OnCompositorFrameTransitionDirectiveProcessed(request->sequence_id());
+      } else {
+        metadata.transition_directives.push_back(request->ConstructDirective(
+            view_transition_element_map, display_color_spaces));
+      }
     }
   } else {
     // In TreesInViz mode, we call TakeViewTransitionRequest() later in
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index 86577456..f0bffc5a 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -513,6 +513,7 @@
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java",
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarAnimationDelegate.java",
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsCoordinator.java",
+  "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsMediator.java",
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsProperties.java",
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsViewBinder.java",
   "java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarColorController.java",
diff --git a/chrome/android/features/tab_ui/java/res/values/dimens.xml b/chrome/android/features/tab_ui/java/res/values/dimens.xml
index b117d6ed..b9fd2588 100644
--- a/chrome/android/features/tab_ui/java/res/values/dimens.xml
+++ b/chrome/android/features/tab_ui/java/res/values/dimens.xml
@@ -162,8 +162,9 @@
     <dimen name="tab_group_list_item_small_radius">3dp</dimen>
     <dimen name="tab_group_list_item_large_radius">24dp</dimen>
 
-    <!-- Dimens for tab switcher context menu. -->
-    <dimen name="tab_switcher_context_menu_max_width">225dp</dimen>
+    <!-- Dimens for tab grid context menu. -->
+    <dimen name="tab_grid_context_menu_max_width">225dp</dimen>
+    <dimen name="tab_grid_context_menu_extended_width">250dp</dimen>
 
     <!-- Dimens for archived tabs auto delete promo -->
     <dimen name="archived_tabs_auto_delete_bottom_sheet_container_dimen">80dp</dimen>
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinator.java
index ab8b4d7..37b4be0 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinator.java
@@ -203,18 +203,24 @@
         @Nullable Tab tab = getTabById(mTabGroupModelFilter::getTabModel, id);
         if (tab == null) return;
 
+        if (ShareUtils.shouldEnableShare(tab)) {
+            itemList.add(
+                    BrowserUiListMenuUtils.buildMenuListItem(
+                            R.string.share, R.id.share_tab, R.drawable.tab_list_editor_share_icon));
+        }
+
         if (mTabGroupModelFilter.getTabGroupCount() == 0) {
             itemList.add(
                     BrowserUiListMenuUtils.buildMenuListItem(
-                            R.string.menu_add_to_new_group,
+                            R.string.menu_add_tab_to_new_group,
                             R.id.add_to_new_tab_group,
                             R.drawable.ic_widgets));
         } else {
             itemList.add(
                     BrowserUiListMenuUtils.buildMenuListItem(
                             tab.getTabGroupId() == null
-                                    ? R.string.add_tab_to_group
-                                    : R.string.move_tab_to_group,
+                                    ? R.string.menu_add_tab_to_group
+                                    : R.string.menu_move_tab_to_group,
                             R.id.add_to_tab_group,
                             R.drawable.ic_widgets));
         }
@@ -233,12 +239,6 @@
                             R.drawable.star_outline_24dp));
         }
 
-        if (ShareUtils.shouldEnableShare(tab)) {
-            itemList.add(
-                    BrowserUiListMenuUtils.buildMenuListItem(
-                            R.string.share, R.id.share_tab, R.drawable.tab_list_editor_share_icon));
-        }
-
         itemList.add(
                 BrowserUiListMenuUtils.buildMenuListItem(
                         R.string.select_tab, R.id.select_tabs, R.drawable.ic_edit_24dp));
@@ -250,7 +250,10 @@
 
     @Override
     protected int getMenuWidth(int anchorViewWidthPx) {
-        return getDimensionPixelSize(R.dimen.tab_switcher_context_menu_max_width);
+        return getDimensionPixelSize(
+                mTabGroupModelFilter.getTabGroupCount() == 0
+                        ? R.dimen.tab_grid_context_menu_extended_width
+                        : R.dimen.tab_grid_context_menu_max_width);
     }
 
     @Nullable
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinatorUnitTest.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinatorUnitTest.java
index e153043..631a3013 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinatorUnitTest.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridContextMenuCoordinatorUnitTest.java
@@ -391,9 +391,9 @@
         mCoordinator.buildMenuActionItems(mMenuItemList, TAB_ID);
 
         assertEquals(5, mMenuItemList.size());
-        assertEquals(R.string.move_tab_to_group, getMenuItemTitleId(0));
-        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(1));
-        assertEquals(R.string.share, getMenuItemTitleId(2));
+        assertEquals(R.string.share, getMenuItemTitleId(0));
+        assertEquals(R.string.menu_move_tab_to_group, getMenuItemTitleId(1));
+        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(2));
         assertEquals(R.string.select_tab, getMenuItemTitleId(3));
         assertEquals(R.string.close_tab, getMenuItemTitleId(4));
     }
@@ -406,9 +406,9 @@
         mCoordinator.buildMenuActionItems(mMenuItemList, TAB_ID);
 
         assertEquals(5, mMenuItemList.size());
-        assertEquals(R.string.add_tab_to_group, getMenuItemTitleId(0));
-        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(1));
-        assertEquals(R.string.share, getMenuItemTitleId(2));
+        assertEquals(R.string.share, getMenuItemTitleId(0));
+        assertEquals(R.string.menu_add_tab_to_group, getMenuItemTitleId(1));
+        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(2));
         assertEquals(R.string.select_tab, getMenuItemTitleId(3));
         assertEquals(R.string.close_tab, getMenuItemTitleId(4));
     }
@@ -421,9 +421,9 @@
         mCoordinator.buildMenuActionItems(mMenuItemList, TAB_ID);
 
         assertEquals(5, mMenuItemList.size());
-        assertEquals(R.string.menu_add_to_new_group, getMenuItemTitleId(0));
-        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(1));
-        assertEquals(R.string.share, getMenuItemTitleId(2));
+        assertEquals(R.string.share, getMenuItemTitleId(0));
+        assertEquals(R.string.menu_add_tab_to_new_group, getMenuItemTitleId(1));
+        assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(2));
         assertEquals(R.string.select_tab, getMenuItemTitleId(3));
         assertEquals(R.string.close_tab, getMenuItemTitleId(4));
     }
@@ -438,9 +438,9 @@
         mCoordinator.buildMenuActionItems(mMenuItemList, TAB_ID);
 
         assertEquals(5, mMenuItemList.size());
-        assertEquals(R.string.menu_add_to_new_group, getMenuItemTitleId(0));
-        assertEquals(R.string.edit_bookmark, getMenuItemTitleId(1));
-        assertEquals(R.string.share, getMenuItemTitleId(2));
+        assertEquals(R.string.share, getMenuItemTitleId(0));
+        assertEquals(R.string.menu_add_tab_to_new_group, getMenuItemTitleId(1));
+        assertEquals(R.string.edit_bookmark, getMenuItemTitleId(2));
         assertEquals(R.string.select_tab, getMenuItemTitleId(3));
         assertEquals(R.string.close_tab, getMenuItemTitleId(4));
     }
@@ -453,7 +453,7 @@
         mCoordinator.buildMenuActionItems(mMenuItemList, TAB_ID);
 
         assertEquals(4, mMenuItemList.size());
-        assertEquals(R.string.add_tab_to_group, getMenuItemTitleId(0));
+        assertEquals(R.string.menu_add_tab_to_group, getMenuItemTitleId(0));
         assertEquals(R.string.add_to_bookmarks, getMenuItemTitleId(1));
         assertEquals(R.string.select_tab, getMenuItemTitleId(2));
         assertEquals(R.string.close_tab, getMenuItemTitleId(3));
@@ -467,11 +467,23 @@
     }
 
     @Test
-    public void testGetMenuWidth() {
+    public void testGetMenuWidth_withTabGroups() {
+        when(mTabGroupModelFilter.getTabGroupCount()).thenReturn(1);
         assertEquals(
                 mActivity
                         .getResources()
-                        .getDimensionPixelSize(R.dimen.tab_switcher_context_menu_max_width),
+                        .getDimensionPixelSize(R.dimen.tab_grid_context_menu_max_width),
+                // Provide an arbitrary value for anchorViewWidthPx for the test.
+                mCoordinator.getMenuWidth(/* anchorViewWidthPx= */ 0));
+    }
+
+    @Test
+    public void testGetMenuWidth_noTabGroups() {
+        when(mTabGroupModelFilter.getTabGroupCount()).thenReturn(0);
+        assertEquals(
+                mActivity
+                        .getResources()
+                        .getDimensionPixelSize(R.dimen.tab_grid_context_menu_extended_width),
                 // Provide an arbitrary value for anchorViewWidthPx for the test.
                 mCoordinator.getMenuWidth(/* anchorViewWidthPx= */ 0));
     }
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
index 32e622ea..f14a2bc 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
@@ -989,9 +989,6 @@
       </message>
 
       <!-- Tab context menu (for individual tabs) -->
-      <message name="IDS_ADD_TAB_TO_GROUP" desc="Content description for an action which adds a tab to a group.">
-        Add tab to group
-      </message>
       <message name="IDS_SELECT_TAB" desc="Content description for an action which selects a singular tab.">
         Select tab
       </message>
@@ -1003,9 +1000,6 @@
           =1 {Move tab to new window}
           other {Move tab to another window}}
       </message>
-      <message name="IDS_MOVE_TAB_TO_GROUP" desc="Content description for an action which moves a tab to another group.">
-        Move to group
-      </message>
 
       <!-- Tab Group List Bottom Sheet -->
       <message name="IDS_TAB_GROUP_LIST_BOTTOM_SHEET_TITLE" desc="Title text for a bottom sheet which is used to add a tab to a tab group.">
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ADD_TAB_TO_GROUP.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ADD_TAB_TO_GROUP.png.sha1
deleted file mode 100644
index 79364f36b..0000000
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ADD_TAB_TO_GROUP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-01f73ecad1626c881028b861ba81978f6f17c622
\ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_MOVE_TAB_TO_GROUP.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_MOVE_TAB_TO_GROUP.png.sha1
deleted file mode 100644
index 9006cee..0000000
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_MOVE_TAB_TO_GROUP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-aa4f87231edd733e3d20fa2473403adc9bf38026
\ No newline at end of file
diff --git a/chrome/android/java/res/layout/custom_tab_menu_button.xml b/chrome/android/java/res/layout/custom_tab_menu_button.xml
index 2e21a9c5..1807751 100644
--- a/chrome/android/java/res/layout/custom_tab_menu_button.xml
+++ b/chrome/android/java/res/layout/custom_tab_menu_button.xml
@@ -11,7 +11,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/menu_button_wrapper"
     android:layout_height="match_parent"
-    android:layout_width="wrap_content">
+    android:layout_width="@dimen/toolbar_button_width">
 
     <org.chromium.ui.widget.ChromeImageButton
         android:id="@+id/menu_button"
@@ -20,9 +20,6 @@
         android:layout_gravity="center"
         android:clickable="true"
         android:focusable="true"
-        android:layout_width="@dimen/toolbar_button_width"
-        android:paddingStart="8dp"
-        android:paddingEnd="16dp"
         android:contentDescription="@string/accessibility_toolbar_btn_menu"
         android:tooltipText="@string/accessibility_toolbar_btn_menu"
         android:background="@null"
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
index 9a63fa0..e9357d1 100644
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -47,7 +47,7 @@
             android:title="@string/menu_new_incognito_tab"
             android:icon="@drawable/ic_incognito" />
         <item android:id="@+id/add_to_group_menu_id"
-          android:title="@string/menu_add_to_group"
+          android:title="@string/menu_add_tab_to_group"
           android:icon="@drawable/ic_widgets" />
         <item android:id="@+id/new_window_menu_id"
             android:title="@string/menu_new_window"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
index d7b605d..7c9583f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -29,6 +29,7 @@
 
 import org.chromium.base.CallbackController;
 import org.chromium.base.ResettersForTesting;
+import org.chromium.base.Token;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.base.supplier.ObservableSupplier;
@@ -1009,13 +1010,14 @@
         }
     }
 
-    public @StringRes int getAddToGroupMenuItemString() {
+    public @StringRes int getAddToGroupMenuItemString(@Nullable Token currentTabGroupId) {
         TabGroupModelFilter filter =
                 mTabModelSelector.getTabGroupModelFilterProvider().getCurrentTabGroupModelFilter();
+        if (currentTabGroupId != null) return R.string.menu_move_tab_to_group;
         if (filter != null) {
             boolean hasGroups = filter.getTabGroupCount() != 0;
-            return hasGroups ? R.string.menu_add_to_group : R.string.menu_add_to_new_group;
+            return hasGroups ? R.string.menu_add_tab_to_group : R.string.menu_add_tab_to_new_group;
         }
-        return R.string.menu_add_to_group;
+        return R.string.menu_add_tab_to_group;
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
index 4bb87ae..04d0cade 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -1744,6 +1744,11 @@
             // If a11y is set up, mAccessibilityView needs to hold keyboard focus.
             // mNodeProvider.requestKeyboardFocusForVirtualView will fail otherwise.
             if (!mAccessibilityView.hasFocus()) mAccessibilityView.requestFocus();
+            // We must manually change the accessibility focus to keep it aligned with the
+            // input/keyboard focus. We do this before moving the keyboard focus because otherwise
+            // TalkBack does not honor the request for unknown reasons.
+            mNodeProvider.sendEventForVirtualView(
+                    mKeyboardFocusIndex, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
             mNodeProvider.requestKeyboardFocusForVirtualView(mKeyboardFocusIndex);
         } else {
             // If a11y is not set up, CompositorViewHolder needs to hold the keyboard focus so that
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
index 20a6386..b01b1e0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -33,6 +33,7 @@
 import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.animation.Interpolator;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ArrayAdapter;
@@ -122,6 +123,7 @@
 import org.chromium.ui.accessibility.AccessibilityState;
 import org.chromium.ui.base.LocalizationUtils;
 import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.interpolators.Interpolators;
 import org.chromium.ui.util.ColorUtils;
 import org.chromium.ui.util.MotionEventUtils;
 import org.chromium.ui.util.XrUtils;
@@ -162,6 +164,7 @@
     private static final int ANIM_TAB_DRAW_X_MS = 250;
     private static final int ANIM_BUTTONS_FADE_MS = 150;
     private static final int ANIM_HOVERED_TAB_CONTAINER_FADE_MS = 200;
+    private static final int NEW_ANIM_TAB_RESIZE_MS = 200;
 
     // Visibility Constants
     private static final float TAB_WIDTH_MEDIUM = 156.f;
@@ -1583,14 +1586,16 @@
     }
 
     private void runTabAddedAnimator(@NonNull List<Animator> animationList, StripLayoutTab tab) {
-        animationList.add(
-                CompositorAnimator.ofFloatProperty(
-                        mUpdateHost.getAnimationHandler(),
-                        tab,
-                        StripLayoutTab.Y_OFFSET,
-                        tab.getHeight(),
-                        0f,
-                        ANIM_TAB_CREATED_MS));
+        if (!ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) {
+            animationList.add(
+                    CompositorAnimator.ofFloatProperty(
+                            mUpdateHost.getAnimationHandler(),
+                            tab,
+                            StripLayoutTab.Y_OFFSET,
+                            tab.getHeight(),
+                            0f,
+                            ANIM_TAB_CREATED_MS));
+        }
 
         startAnimations(animationList);
     }
@@ -2669,17 +2674,19 @@
                         // Removes all dying tabs from TabModel.
                         finishAnimationsAndCloseDyingTabs(allowUndo);
 
-                        if (runImprovedTabAnimations) {
-                            resizeStripOnTabClose(getTabById(tab.getTabId()));
-                        } else {
-                            mMultiStepTabCloseAnimRunning = false;
-                            mNewTabButtonAnimRunning = false;
+                        if (!ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) {
+                            if (runImprovedTabAnimations) {
+                                resizeStripOnTabClose(getTabById(tab.getTabId()));
+                            } else {
+                                mMultiStepTabCloseAnimRunning = false;
+                                mNewTabButtonAnimRunning = false;
 
-                            // Resize the tabs appropriately.
-                            computeAndUpdateTabWidth(
-                                    /* animate= */ true,
-                                    /* deferAnimations= */ false,
-                                    /* closedTab= */ null);
+                                // Resize the tabs appropriately.
+                                computeAndUpdateTabWidth(
+                                        /* animate= */ true,
+                                        /* deferAnimations= */ false,
+                                        /* closedTab= */ null);
+                            }
                         }
                     }
                 };
@@ -2699,18 +2706,26 @@
     private void runTabRemovalAnimation(StripLayoutTab tab, AnimatorListener listener) {
         // 1. Setup the close animation.
         List<Animator> tabClosingAnimators = new ArrayList<>();
-        tabClosingAnimators.add(
-                CompositorAnimator.ofFloatProperty(
-                        mUpdateHost.getAnimationHandler(),
-                        tab,
-                        StripLayoutTab.Y_OFFSET,
-                        tab.getOffsetY(),
-                        tab.getHeight(),
-                        ANIM_TAB_CLOSED_MS));
-
-        // 2. Start the animation.
-        mNewTabButtonAnimRunning = true;
-        mMultiStepTabCloseAnimRunning = true;
+        if (ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) {
+            // computeAndUpdateTabWidth handles animating a tab closing.
+            tabClosingAnimators =
+                    computeAndUpdateTabWidth(
+                            /* animate= */ true,
+                            /* deferAnimations= */ true,
+                            /* closedTab= */ getTabById(tab.getTabId()));
+        } else {
+            tabClosingAnimators.add(
+                    CompositorAnimator.ofFloatProperty(
+                            mUpdateHost.getAnimationHandler(),
+                            tab,
+                            StripLayoutTab.Y_OFFSET,
+                            tab.getOffsetY(),
+                            tab.getHeight(),
+                            ANIM_TAB_CLOSED_MS));
+            // 2. Start the animation.
+            mNewTabButtonAnimRunning = true;
+            mMultiStepTabCloseAnimRunning = true;
+        }
         startAnimations(tabClosingAnimators, listener);
     }
 
@@ -2827,7 +2842,7 @@
         bringViewToVisibleArea(
                 view,
                 LayoutManagerImpl.time(),
-                /* animate= */ !AccessibilityState.isAccessibilityToolPresent());
+                /* animate= */ !AccessibilityState.prefersReducedMotion());
         mUpdateHost.requestUpdate();
     }
 
@@ -3752,6 +3767,7 @@
 
         for (int i = 0; i < mStripTabs.length; i++) {
             final StripLayoutTab tab = mStripTabs[i];
+            if (tab.isDying() && !ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) continue;
             if (!tab.isClosed() && !tab.isDraggedOffStrip() && !tab.isCollapsed()) numLiveTabs++;
         }
 
@@ -3802,21 +3818,50 @@
         for (int i = 0; i < mStripTabs.length; i++) {
             StripLayoutTab tab = mStripTabs[i];
             if (tab.isClosed()) tab.setWidth(TAB_OVERLAP_WIDTH_DP);
-            if (tab.isDying() || tab.isCollapsed()) continue;
+            if ((tab.isDying() && !ChromeFeatureList.sTabletTabStripAnimation.isEnabled())
+                    || tab.isCollapsed()) {
+                continue;
+            }
             Float cachedTabWidth = mCachedTabWidthSupplier.get();
             if (resizeAnimationList != null) {
+                CompositorAnimator animator;
+                // Handle animating a tab being closed for TabletTabStripAnimation.
+                if (tab.isDying()) {
+                    animator =
+                            CompositorAnimator.ofFloatProperty(
+                                    mUpdateHost.getAnimationHandler(),
+                                    tab,
+                                    StripLayoutTab.WIDTH,
+                                    tab.getWidth(),
+                                    TAB_OVERLAP_WIDTH_DP,
+                                    NEW_ANIM_TAB_RESIZE_MS,
+                                    Interpolators.STANDARD_DEFAULT_EFFECTS);
+                    resizeAnimationList.add(animator);
+                    continue;
+                }
+
                 if (cachedTabWidth > 0f && tab.getWidth() == cachedTabWidth) {
                     // No need to create an animator to animate to the width we're already at.
                     continue;
                 }
-                CompositorAnimator animator =
+
+                int duration = ANIM_TAB_RESIZE_MS;
+                Interpolator interpolator = Interpolators.DECELERATE_INTERPOLATOR;
+
+                if (ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) {
+                    duration = NEW_ANIM_TAB_RESIZE_MS;
+                    interpolator = Interpolators.STANDARD_DEFAULT_EFFECTS;
+                }
+                animator =
                         CompositorAnimator.ofFloatProperty(
                                 mUpdateHost.getAnimationHandler(),
                                 tab,
                                 StripLayoutTab.WIDTH,
                                 tab.getWidth(),
                                 cachedTabWidth,
-                                ANIM_TAB_RESIZE_MS);
+                                duration,
+                                interpolator);
+
                 resizeAnimationList.add(animator);
             } else {
                 mStripTabs[i].setWidth(cachedTabWidth);
@@ -3970,10 +4015,16 @@
                 if (tab.isClosed()) continue;
                 // idealX represents where a tab should be placed in the tab strip.
                 view.setIdealX(startX);
-                delta =
-                        tab.isDying()
-                                ? getEffectiveTabWidth()
-                                : (tab.getWidth() - TAB_OVERLAP_WIDTH_DP) * tab.getWidthWeight();
+                if (ChromeFeatureList.sTabletTabStripAnimation.isEnabled()) {
+                    delta = (tab.getWidth() - TAB_OVERLAP_WIDTH_DP) * tab.getWidthWeight();
+                } else {
+                    delta =
+                            tab.isDying()
+                                    ? getEffectiveTabWidth()
+                                    : (tab.getWidth() - TAB_OVERLAP_WIDTH_DP)
+                                            * tab.getWidthWeight();
+                }
+
             } else {
                 // Offset to "undo" the tab overlap width as that doesn't apply to non-tab views.
                 // Also applies the desired overlap with the previous tab.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
index 4760014a..1123d0fc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java
@@ -15,6 +15,7 @@
 import org.chromium.base.MathUtils;
 import org.chromium.base.Token;
 import org.chromium.base.supplier.Supplier;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabGroupModelFilter;
 import org.chromium.chrome.browser.tabmodel.TabGroupTitleUtils;
@@ -387,4 +388,9 @@
         if (view == null) return;
         view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
     }
+
+    public static boolean skipTabEdgePositionCalculation(StripLayoutTab tab) {
+        return (tab.isDying() && !ChromeFeatureList.sTabletTabStripAnimation.isEnabled())
+                || tab.isDraggedOffStrip();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripStacker.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripStacker.java
index ceefa8dc..a2ec6dde 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripStacker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripStacker.java
@@ -55,7 +55,7 @@
             float stripWidth) {
         float rightEdge = stripLeftMargin;
         for (StripLayoutTab tab : indexOrderedTabs) {
-            if (tab.isDying() || tab.isDraggedOffStrip()) continue;
+            if (StripLayoutUtils.skipTabEdgePositionCalculation(tab)) continue;
             float layoutWidth = (tab.getWidth() - tabOverlapWidth) * tab.getWidthWeight();
             rightEdge = Math.max(tab.getDrawX() + layoutWidth, rightEdge);
         }
@@ -72,7 +72,7 @@
             float newTabButtonWidth) {
         float leftEdge = stripWidth - stripRightMargin;
         for (StripLayoutTab tab : indexOrderedTabs) {
-            if (tab.isDying() || tab.isDraggedOffStrip()) continue;
+            if (StripLayoutUtils.skipTabEdgePositionCalculation(tab)) continue;
             leftEdge = Math.min(tab.getDrawX(), leftEdge);
         }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinator.java
index 322945ff..6c32890d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinator.java
@@ -186,7 +186,7 @@
 
         itemList.add(
                 BrowserUiListMenuUtils.buildMenuListItemWithIncognitoBranding(
-                        R.string.add_tab_to_group,
+                        R.string.menu_add_tab_to_group,
                         R.id.add_to_tab_group,
                         isIncognito,
                         /* enabled= */ true));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
index 67bedf4..762dff19 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
@@ -405,20 +405,16 @@
                         : null;
         if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
             CustomTabToolbar toolbar = mActivity.findViewById(R.id.toolbar);
-            toolbar.initializeToolbar(
-                    mActivity,
-                    mIntentDataProvider.get(),
-                    mFeatureOverridesManagerSupplier.get(),
-                    mMinimizeDelegateSupplier.get(),
-                    omniboxParams);
             mToolbarButtonsCoordinator =
                     new CustomTabToolbarButtonsCoordinator(
+                            mActivity,
                             toolbar,
                             mIntentDataProvider.get(),
                             params -> mToolbarCoordinator.get().onCustomButtonClick(params),
                             mMinimizeDelegateSupplier.get(),
-                            mFeatureOverridesManagerSupplier.get());
-
+                            mFeatureOverridesManagerSupplier.get(),
+                            omniboxParams,
+                            mActivityLifecycleDispatcher);
             super.initializeToolbar();
 
             mToolbarCoordinator.get().onToolbarInitialized(mToolbarManager);
@@ -845,6 +841,11 @@
             mWebAppHeaderLayoutCoordinator.destroy();
             mWebAppHeaderLayoutCoordinator = null;
         }
+
+        if (mToolbarButtonsCoordinator != null) {
+            mToolbarButtonsCoordinator.destroy();
+            mToolbarButtonsCoordinator = null;
+        }
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabBottomSheetStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabBottomSheetStrategy.java
index a50dbdd..6aff8ac8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabBottomSheetStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabBottomSheetStrategy.java
@@ -348,7 +348,7 @@
                         mActivity, this::isFullHeight, () -> mStatus, this);
         toolbar.setHandleStrategy(mHandleStrategy);
         if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            toolbarButtonsCoordinator.setMinimizeButtonVisible(false);
+            toolbarButtonsCoordinator.setMinimizeButtonEnabled(false);
         } else {
             toolbar.setMinimizeButtonEnabled(false);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabFullSizeStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabFullSizeStrategy.java
index ded6995..6b305ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabFullSizeStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabFullSizeStrategy.java
@@ -73,7 +73,7 @@
         super.onToolbarInitialized(
                 coordinatorView, toolbar, toolbarCornerRadius, toolbarButtonsCoordinator);
         if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            toolbarButtonsCoordinator.setMinimizeButtonVisible(true);
+            toolbarButtonsCoordinator.setMinimizeButtonEnabled(true);
         } else {
             toolbar.setMinimizeButtonEnabled(true);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabSideSheetStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabSideSheetStrategy.java
index 714ac14..dd76b03 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabSideSheetStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/partialcustomtab/PartialCustomTabSideSheetStrategy.java
@@ -171,7 +171,7 @@
             }
         }
         if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            mToolbarButtonsCoordinator.setMinimizeButtonVisible(false);
+            mToolbarButtonsCoordinator.setMinimizeButtonEnabled(false);
         } else {
             toolbar.setMinimizeButtonEnabled(false);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java
index 1c509ce..eb1fda76 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar.java
@@ -7,10 +7,6 @@
 import static androidx.browser.customtabs.CustomTabsIntent.CLOSE_BUTTON_POSITION_END;
 
 import static org.chromium.base.MathUtils.interpolate;
-import static org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.CustomTabProfileType.INCOGNITO;
-import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CLICK_LISTENER;
-import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.DESCRIPTION;
-import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.ICON;
 import static org.chromium.ui.accessibility.KeyboardFocusUtil.setFocusOnFirstFocusableDescendant;
 
 import android.animation.Animator;
@@ -70,10 +66,7 @@
 import org.chromium.base.task.TaskTraits;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate;
-import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider;
-import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.TitleVisibility;
 import org.chromium.chrome.browser.customtabs.CustomTabFeatureOverridesManager;
-import org.chromium.chrome.browser.customtabs.features.CustomTabDimensionUtils;
 import org.chromium.chrome.browser.customtabs.features.branding.ToolbarBrandingDelegate;
 import org.chromium.chrome.browser.customtabs.features.branding.ToolbarBrandingOverlayCoordinator;
 import org.chromium.chrome.browser.customtabs.features.branding.ToolbarBrandingOverlayProperties;
@@ -136,8 +129,6 @@
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.interpolators.Interpolators;
 import org.chromium.ui.modaldialog.ModalDialogManager;
-import org.chromium.ui.modelutil.PropertyKey;
-import org.chromium.ui.modelutil.PropertyListModel;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.text.SpanApplier;
 import org.chromium.ui.text.SpanApplier.SpanInfo;
@@ -194,32 +185,23 @@
     // region CCTToolbarRefactor
 
     private int mToolbarWidth;
-    private BrowserServicesIntentDataProvider mIntentDataProvider;
-    private CustomTabMinimizeDelegate mMinimizeDelegate;
     private FrameLayout mCustomButtonsParent;
-    private PropertyListModel<PropertyModel, PropertyKey> mCustomActionButtonsListModel;
-    private boolean mIsInMultiWindowMode;
+    private ImageButton mSideSheetMaximizeButton;
 
-    private final int mDefaultButtonWidth =
-            getResources().getDimensionPixelSize(R.dimen.toolbar_button_width);
-    private final int mDefaultIconWidth =
-            getResources().getDimensionPixelSize(R.dimen.toolbar_icon_default_width);
-    private final int mIconSpacing =
-            getResources().getDimensionPixelSize(R.dimen.custom_tabs_toolbar_icon_spacing);
-
-    private static final class ButtonPositioningParams {
-        public int availableWidth;
-        public int totalStartAlignedButtonWidth;
-        public int spacingFromLastStartAlignedButton;
-        public int totalEndAlignedButtonWidth;
-        public int spacingFromLastEndAlignedButton;
+    /** Listener interface to be notified when the toolbar is measured with a new width. */
+    public interface OnNewWidthMeasuredListener {
+        void onNewWidthMeasured(int width);
     }
 
+    private @Nullable OnNewWidthMeasuredListener mOnNewWidthMeasuredListener;
+
     public static final class OmniboxParams {
         /** The {@link SearchActivityClient} instance used to request Omnibox. */
         public SearchActivityClient searchClient;
+
         /** The package name of the Custom Tabs embedder. */
         public String clientPackageName;
+
         /** A handler for taps on the omnibox, or null if the default handler should be used. */
         @Nullable public Consumer<Tab> tapHandler;
 
@@ -284,7 +266,9 @@
         mBrandedColorScheme = BrandedColorScheme.APP_DEFAULT;
 
         mIncognitoImageView = findViewById(R.id.incognito_cct_logo_image_view);
-        if (!ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
+        if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
+            mCustomButtonsParent = findViewById(R.id.action_buttons);
+        } else {
             mCustomActionButtons = findViewById(R.id.action_buttons);
         }
         mCloseButton = findViewById(R.id.close_button);
@@ -305,47 +289,105 @@
         mLocationBar.onNativeLibraryReady();
     }
 
-    /**
-     * Initialize the toolbar with the data newly available.
-     *
-     * @param activity The {@link Activity} that the toolbar is attached to.
-     * @param intentDataProvider {@link BrowserServicesIntentDataProvider} for accessing CCT intent
-     *     data.
-     * @param featureOverridesManager {@link CustomTabFeatureOverridesManager} for accessing CCT
-     *     feature overrides.
-     * @param minimizeDelegate {@link CustomTabMinimizeDelegate} for minimizing the tab.
-     * @param omniboxParams {@link OmniboxParams}, null if omnibox isn't enabled.
-     */
-    public void initializeToolbar(
-            Activity activity,
-            BrowserServicesIntentDataProvider intentDataProvider,
-            CustomTabFeatureOverridesManager featureOverridesManager,
-            CustomTabMinimizeDelegate minimizeDelegate,
-            OmniboxParams omniboxParams) {
-        assert ChromeFeatureList.sCctToolbarRefactor.isEnabled();
-
-        mIntentDataProvider = intentDataProvider;
-        mFeatureOverridesManager = featureOverridesManager;
-        mMinimizeDelegate = minimizeDelegate;
-        if (omniboxParams != null) {
-            setOmniboxParams(omniboxParams);
+    /** Returns the incognito image view, inflating it first if necessary. */
+    ImageView ensureIncognitoImageViewInflated() {
+        if (mIncognitoImageView != null) {
+            return mIncognitoImageView;
         }
-        calculateToolbarWidthBeforeMeasure(activity, intentDataProvider);
-        inflateAndPositionToolbarElements(mToolbarWidth);
+
+        ViewStub stub = findViewById(R.id.incognito_icon_stub);
+        mIncognitoImageView = (ImageView) stub.inflate();
+        return mIncognitoImageView;
+    }
+
+    /** Returns the close button. */
+    @Nullable
+    ImageButton getCloseButton() {
+        return mCloseButton;
+    }
+
+    /** Returns the close button, inflating and/or making it visible first if necessary. */
+    ImageButton ensureCloseButtonInflated() {
+        if (mCloseButton != null) {
+            mCloseButton.setVisibility(VISIBLE);
+            return mCloseButton;
+        }
+
+        LayoutInflater.from(getContext()).inflate(R.layout.custom_tab_close_button, this, true);
+        mCloseButton = findViewById(R.id.close_button);
+        return mCloseButton;
+    }
+
+    /** Returns the menu button. */
+    @Nullable
+    MenuButton getMenuButton() {
+        return mMenuButton;
+    }
+
+    /** Returns the menu button, inflating and/or making it visible first if necessary. */
+    MenuButton ensureMenuButtonInflated() {
+        if (mMenuButton != null) {
+            mMenuButton.setVisibility(VISIBLE);
+            return mMenuButton;
+        }
+
+        LayoutInflater.from(getContext()).inflate(R.layout.custom_tab_menu_button, this, true);
+        mMenuButton = findViewById(R.id.menu_button_wrapper);
+        return mMenuButton;
+    }
+
+    /** Returns the minimize button. */
+    @Nullable
+    ImageButton getMinimizeButton() {
+        return mMinimizeButton;
+    }
+
+    /** Returns the minimize button, inflating and/or making it visible first if necessary. */
+    ImageButton ensureMinimizeButtonInflated() {
+        if (mMinimizeButton != null) {
+            mMinimizeButton.setVisibility(VISIBLE);
+            return mMinimizeButton;
+        }
+
+        LayoutInflater.from(getContext()).inflate(R.layout.custom_tabs_minimize_button, this, true);
+        mMinimizeButton = findViewById(R.id.custom_tabs_minimize_button);
+        return mMinimizeButton;
+    }
+
+    /** Returns the side-sheet maximize button. */
+    @Nullable
+    ImageButton getSideSheetMaximizeButton() {
+        return mSideSheetMaximizeButton;
     }
 
     /**
-     * Inflates and positions the buttons and the location bar within the toolbar based on the
-     * current toolbar width and the current button model. If there isn't enough space for all
-     * buttons, some buttons may be omitted based on their priority.
+     * Returns the side-sheet maximize button, inflating and/or making it visible first if
+     * necessary.
      */
-    void reinflateAndRepositionToolbarElements() {
-        inflateAndPositionToolbarElements(mToolbarWidth);
+    ImageButton ensureSideSheetMaximizeButtonInflated() {
+        if (mSideSheetMaximizeButton != null) {
+            mSideSheetMaximizeButton.setVisibility(VISIBLE);
+            return mSideSheetMaximizeButton;
+        }
+
+        LayoutInflater.from(getContext())
+                .inflate(R.layout.custom_tabs_sidepanel_maximize, this, true);
+        mSideSheetMaximizeButton = findViewById(R.id.custom_tabs_sidepanel_maximize);
+        return mSideSheetMaximizeButton;
     }
 
-    private void calculateToolbarWidthBeforeMeasure(
-            Activity activity, BrowserServicesIntentDataProvider intentDataProvider) {
-        mToolbarWidth = CustomTabDimensionUtils.getInitialWidth(activity, intentDataProvider);
+    /** Returns the parent view for the custom action buttons. */
+    FrameLayout getCustomActionButtonsParent() {
+        return mCustomButtonsParent;
+    }
+
+    /**
+     * Sets an {@link OnNewWidthMeasuredListener}.
+     *
+     * @param listener The {@link OnNewWidthMeasuredListener}. A null value clears the listener.
+     */
+    public void setOnNewWidthMeasuredListener(@Nullable OnNewWidthMeasuredListener listener) {
+        mOnNewWidthMeasuredListener = listener;
     }
 
     @Override
@@ -356,235 +398,11 @@
         mCustomActionButtons.setVisibility(visibility);
     }
 
-    /**
-     * Inflates and positions the buttons and the location bar within the toolbar based on the
-     * provided available width and the current button model. If there isn't enough space for all
-     * buttons, some buttons may be omitted based on their priority.
-     *
-     * <p>This method should be called every time the toolbar width changes.
-     *
-     * @param availableWidth The available width of the toolbar in pixels.
-     */
-    private void inflateAndPositionToolbarElements(@Px final int availableWidth) {
-        LayoutInflater layoutInflater = LayoutInflater.from(getContext());
-        int locationBarMinWidth = getLocationBarMinWidth();
-        var posParams = new ButtonPositioningParams();
-        posParams.availableWidth = availableWidth;
-
-        if (mIntentDataProvider.getCustomTabMode() == INCOGNITO) {
-            int incognitoIconWidth =
-                    getResources().getDimensionPixelSize(R.dimen.custom_tabs_incognito_icon_width);
-            locationBarMinWidth += incognitoIconWidth;
-
-            ViewStub stub = findViewById(R.id.incognito_icon_stub);
-            mIncognitoImageView = (ImageView) stub.inflate();
-        }
-
-        posParams.availableWidth -= locationBarMinWidth;
-
-        if (mCloseButton == null && mIntentDataProvider.isCloseButtonEnabled()) {
-            layoutInflater.inflate(R.layout.custom_tab_close_button, this, true);
-            mCloseButton = findViewById(R.id.close_button);
-            mCloseButton.setOnLongClickListener(this);
-        }
-
-        if (mCloseButton != null) {
-            boolean isEndPosition = mCloseButtonPosition == CLOSE_BUTTON_POSITION_END;
-            positionButton(mCloseButton, posParams, mDefaultIconWidth, isEndPosition);
-        }
-
-        if (mMenuButton == null) {
-            layoutInflater.inflate(R.layout.custom_tab_menu_button, this, true);
-            mMenuButton = findViewById(R.id.menu_button_wrapper);
-        }
-
-        // Now position the menu button.
-        {
-            boolean isEndPosition = mCloseButtonPosition != CLOSE_BUTTON_POSITION_END;
-            positionButton(mMenuButton, posParams, mDefaultIconWidth, isEndPosition);
-        }
-
-        // Check if we have space for the minimize button.
-        if (posParams.availableWidth >= mDefaultButtonWidth) {
-            prepareMinimizeButton();
-
-            if (mMinimizeButton != null && mMinimizeButton.getVisibility() == VISIBLE) {
-                // The minimize button is always start aligned.
-                positionButton(mMinimizeButton, posParams, mDefaultIconWidth, false);
-            }
-        }
-
-        View sideSheetMaximizeButton = findViewById(R.id.custom_tabs_sidepanel_maximize);
-        // Check if we have space for the side-sheet maximize button.
-        if (sideSheetMaximizeButton != null
-                && sideSheetMaximizeButton.getVisibility() == VISIBLE
-                && posParams.availableWidth >= mDefaultButtonWidth) {
-            positionButton(sideSheetMaximizeButton, posParams, mDefaultIconWidth, true);
-        }
-
-        // TODO(crbug.com/402213312): We need to think about how this should work with MTB.
-        mCustomButtonsParent = findViewById(R.id.action_buttons);
-        // TODO(crbug.com/402213312): Think of how we can optimize this so we don't reinflate all
-        // buttons any time if we add/remove one.
-        mCustomButtonsParent.removeAllViews();
-
-        if (mCustomActionButtonsListModel != null) {
-            for (var model : mCustomActionButtonsListModel) {
-                if (!maybeInflateAndPositionCustomButton(model, posParams)) break;
-            }
-        }
-
-        positionLocationBar(posParams);
-    }
-
-    /**
-     * Positions a button on the toolbar based on given arguments.
-     *
-     * @param button The button to be positioned.
-     * @param posParams A {@link ButtonPositioningParams} tracking the current state of the
-     *     positioning process. It will be modified by this method.
-     * @param iconWidth The width of the icon within the button.
-     * @param isEndAligned True if the button is aligned to the end of the toolbar, false if aligned
-     *     to the start.
-     */
-    private void positionButton(
-            View button, ButtonPositioningParams posParams, int iconWidth, boolean isEndAligned) {
-        int startPadding;
-        int endPadding;
-        // We calculate this button's padding based on the padding of the button that came before.
-        if (isEndAligned) {
-            assert posParams.spacingFromLastEndAlignedButton <= mIconSpacing;
-            // Remaining space to reach mIconSpacing.
-            endPadding = mIconSpacing - posParams.spacingFromLastEndAlignedButton;
-            // Remaining space to reach the default button width. If the button will be wider than
-            // the default width because its icon is wider, make the start padding 0.
-            startPadding = Math.max(0, mDefaultButtonWidth - iconWidth - endPadding);
-            posParams.spacingFromLastEndAlignedButton = startPadding;
-        } else {
-            assert posParams.spacingFromLastStartAlignedButton <= mIconSpacing;
-            // Similar to the block above, just start and end padding are reversed.
-            startPadding = mIconSpacing - posParams.spacingFromLastStartAlignedButton;
-            endPadding = Math.max(0, mDefaultButtonWidth - iconWidth - startPadding);
-            posParams.spacingFromLastStartAlignedButton = endPadding;
-        }
-        int buttonWidth = iconWidth + startPadding + endPadding;
-        setHorizontalPadding(button, startPadding, endPadding);
-        // Adjust the layout gravity based on where the button is aligned, and offset it by
-        // the total width of the buttons we've previously placed.
-        setHorizontalLayoutParams(
-                button,
-                isEndAligned ? 0 : posParams.totalStartAlignedButtonWidth,
-                isEndAligned ? posParams.totalEndAlignedButtonWidth : 0,
-                isEndAligned);
-        if (isEndAligned) {
-            // We've placed a button at the end.
-            posParams.totalEndAlignedButtonWidth += buttonWidth;
-        } else {
-            // We've placed a button at the start.
-            posParams.totalStartAlignedButtonWidth += buttonWidth;
-        }
-        posParams.availableWidth -= buttonWidth;
-    }
-
-    private void setHorizontalLayoutParams(
-            View view, @Px int startMargin, @Px int endMargin, boolean isEndAligned) {
-        var lp = (FrameLayout.LayoutParams) view.getLayoutParams();
-        lp.setMarginStart(startMargin);
-        lp.setMarginEnd(endMargin);
-        int horizontalGravity = isEndAligned ? Gravity.END : Gravity.START;
-        lp.gravity = Gravity.CENTER_VERTICAL | horizontalGravity;
-        view.setLayoutParams(lp);
-    }
-
     private static void setHorizontalPadding(View view, @Px int startPadding, @Px int endPadding) {
         view.setPaddingRelative(
                 startPadding, view.getPaddingTop(), endPadding, view.getPaddingBottom());
     }
 
-    @Px
-    private int getLocationBarMinWidth() {
-        int locationBarMinWidth =
-                getResources().getDimensionPixelSize(R.dimen.location_bar_min_url_width);
-        if (mLocationBar.mOmniboxEnabled) {
-            locationBarMinWidth +=
-                    getResources().getDimensionPixelSize(R.dimen.toolbar_button_width);
-        } else if (mIntentDataProvider.getTitleVisibilityState() == TitleVisibility.HIDDEN) {
-            locationBarMinWidth +=
-                    getResources().getDimensionPixelSize(R.dimen.custom_tabs_security_icon_width);
-        }
-        return locationBarMinWidth;
-    }
-
-    private void positionLocationBar(ButtonPositioningParams posParams) {
-        var locationBarLp = ((MarginLayoutParams) mLocationBar.getLayout().getLayoutParams());
-        locationBarLp.setMarginStart(posParams.totalStartAlignedButtonWidth);
-        locationBarLp.setMarginEnd(posParams.totalEndAlignedButtonWidth);
-        mLocationBar.getLayout().setLayoutParams(locationBarLp);
-
-        var titleUrlLp = ((MarginLayoutParams) mLocationBar.mTitleUrlContainer.getLayoutParams());
-        if (mLocationBar.mOmniboxEnabled) {
-            // TODO(crbug.com/402213312): Revisit this when cleaning up CCTNestedSecurityIcon.
-            // The security button is static when omnibox is enabled, so offset the url bar for it.
-            int buttonWidth = getResources().getDimensionPixelSize(R.dimen.toolbar_button_width);
-            titleUrlLp.leftMargin += buttonWidth;
-        }
-        if (mIntentDataProvider.getCustomTabMode() == INCOGNITO) {
-            int incognitoIconWidth =
-                    getResources().getDimensionPixelSize(R.dimen.custom_tabs_incognito_icon_width);
-            titleUrlLp.leftMargin += incognitoIconWidth;
-        }
-        mLocationBar.mTitleUrlContainer.setLayoutParams(titleUrlLp);
-
-        // Ensure correct spacing between the last start aligned button and the location bar.
-        int desiredSpace =
-                getResources()
-                        .getDimensionPixelSize(R.dimen.custom_tabs_location_bar_start_spacing);
-        int remainingSpace =
-                Math.max(0, desiredSpace - posParams.spacingFromLastStartAlignedButton);
-        setHorizontalPadding(
-                mLocationBar.getLayout(), remainingSpace, mLocationBar.getLayout().getPaddingEnd());
-    }
-
-    private boolean maybeInflateAndPositionCustomButton(
-            PropertyModel model, ButtonPositioningParams posParams) {
-        Drawable drawable = model.get(ICON);
-        // The height will be scaled to match spec while keeping the aspect ratio, so get the scaled
-        // width through that.
-        int sourceHeight = drawable.getIntrinsicHeight();
-        int sourceScaledHeight = getResources().getDimensionPixelSize(R.dimen.toolbar_icon_height);
-        int sourceWidth = drawable.getIntrinsicWidth();
-        int sourceScaledWidth = sourceWidth * sourceScaledHeight / sourceHeight;
-
-        // Remaining space to reach mIconSpacing to make up to the required spacing.
-        assert posParams.spacingFromLastEndAlignedButton <= mIconSpacing;
-        int endPadding = mIconSpacing - posParams.spacingFromLastEndAlignedButton;
-        // Remaining space to reach at least the default button width. If the button will be wider
-        // than the default width because its icon is wider, make the start padding 0.
-        int startPadding = Math.max(0, mDefaultButtonWidth - sourceScaledWidth - endPadding);
-        int buttonWidth = sourceScaledWidth + startPadding + endPadding;
-
-        if (buttonWidth > posParams.availableWidth) return false;
-
-        ImageButton button =
-                (ImageButton)
-                        LayoutInflater.from(getContext())
-                                .inflate(
-                                        R.layout.custom_tabs_toolbar_button,
-                                        mCustomButtonsParent,
-                                        false);
-        button.setOnLongClickListener(this);
-        button.setOnClickListener(model.get(CLICK_LISTENER));
-
-        updateCustomActionButtonVisuals(button, drawable, model.get(DESCRIPTION));
-
-        // Add the view at the beginning of the list. This isn't reflected in how the button is
-        // positioned; it's only for keeping the index aligned with the params list.
-        mCustomButtonsParent.addView(button, 0);
-        positionButton(button, posParams, sourceScaledWidth, /* isEndAligned= */ true);
-
-        return true;
-    }
-
     @Override
     protected void setCloseButtonImageResource(Drawable drawable) {
         mCloseButton.setVisibility(drawable != null ? View.VISIBLE : View.GONE);
@@ -594,12 +412,6 @@
         }
     }
 
-    // TODO(crbug.com/402213312): Don't expose the model to this view once we MVC-ify things better.
-    void setCustomActionButtonsListModel(PropertyListModel<PropertyModel, PropertyKey> listModel) {
-        mCustomActionButtonsListModel = listModel;
-        inflateAndPositionToolbarElements(mToolbarWidth);
-    }
-
     @Override
     protected void setCustomTabCloseClickHandler(OnClickListener listener) {
         mCloseButton.setOnClickListener(listener);
@@ -815,36 +627,6 @@
     }
 
     /**
-     * Inflates and prepares the minimize button if it should be enabled.
-     *
-     * <p>This is only used when CCTToolbarRefactor is enabled.
-     */
-    private void prepareMinimizeButton() {
-        if (isInMultiWindowMode() || !mMinimizeButtonEnabled) {
-            if (mMinimizeButton != null) {
-                mMinimizeButton.setVisibility(GONE);
-            }
-            return;
-        }
-
-        if (mMinimizeButton != null) {
-            mMinimizeButton.setVisibility(VISIBLE);
-            return;
-        }
-
-        LayoutInflater.from(getContext()).inflate(R.layout.custom_tabs_minimize_button, this, true);
-        mMinimizeButton = findViewById(R.id.custom_tabs_minimize_button);
-        mMinimizeButton.setOnClickListener(view -> mMinimizeDelegate.minimize());
-        var d =
-                UiUtils.getTintedDrawable(
-                        getContext(), MinimizedFeatureUtils.getMinimizeIcon(), mTint);
-        mMinimizeButton.setTag(R.id.custom_tabs_toolbar_tintable, true);
-        mMinimizeButton.setImageDrawable(d);
-        updateButtonTint(mMinimizeButton);
-        mMinimizeButton.setOnLongClickListener(this);
-    }
-
-    /**
      * Inflates and prepares the minimize button if it should be enabled, when CCTToolbarRefactor is
      * disabled.
      */
@@ -1260,13 +1042,6 @@
         mLocationBarModel.notifyTitleChanged();
         mLocationBarModel.notifyUrlChanged();
         mLocationBarModel.notifyPrimaryColorChanged();
-
-        if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            if (mIsInMultiWindowMode != isInMultiWindowMode()) {
-                mIsInMultiWindowMode = isInMultiWindowMode();
-                inflateAndPositionToolbarElements(mToolbarWidth);
-            }
-        }
     }
 
     @Override
@@ -1346,13 +1121,15 @@
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            int measuredWidth = getMeasuredWidth();
-            if (measuredWidth > 0 && mToolbarWidth != measuredWidth) {
-                mToolbarWidth = measuredWidth;
-                inflateAndPositionToolbarElements(mToolbarWidth);
+        int measuredWidth = getMeasuredWidth();
+        if (measuredWidth > 0 && mToolbarWidth != measuredWidth) {
+            mToolbarWidth = measuredWidth;
+            if (mOnNewWidthMeasuredListener != null) {
+                mOnNewWidthMeasuredListener.onNewWidthMeasured(mToolbarWidth);
             }
+        }
 
+        if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
             return;
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsCoordinator.java
index f5cf5e0..3a2dd7d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsCoordinator.java
@@ -8,23 +8,30 @@
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.DESCRIPTION;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.ICON;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.INDIVIDUAL_BUTTON_KEYS;
-import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MINIMIZE_BUTTON;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.SIDE_SHEET_MAXIMIZE_BUTTON;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.VISIBLE;
 
+import android.app.Activity;
 import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.browser.customtabs.CustomTabsIntent;
 
 import org.chromium.base.Callback;
 import org.chromium.build.annotations.Nullable;
 import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider;
+import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.CustomTabProfileType;
+import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.TitleVisibility;
 import org.chromium.chrome.browser.browserservices.intents.CustomButtonParams;
 import org.chromium.chrome.browser.customtabs.CustomTabFeatureOverridesManager;
+import org.chromium.chrome.browser.customtabs.features.CustomTabDimensionUtils;
 import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.CustomTabMinimizeDelegate;
-import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.MinimizedFeatureUtils;
 import org.chromium.chrome.browser.customtabs.features.partialcustomtab.PartialCustomTabSideSheetStrategy.MaximizeButtonCallback;
+import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CloseButtonData;
 import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MinimizeButtonData;
 import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.SideSheetMaximizeButtonData;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.ui.modelutil.ListModelChangeProcessor;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyListModel;
@@ -38,34 +45,51 @@
                     PropertyListModel<PropertyModel, PropertyKey>, CustomTabToolbar, PropertyKey>
             mCustomActionButtonsMcp;
     private final PropertyModel mModel;
-    private final CustomTabMinimizeDelegate mMinimizeDelegate;
-
-    /** Whether the minimize button is available for the device and the current configuration. */
-    private final boolean mMinimizeButtonAvailable;
+    private final CustomTabToolbarButtonsMediator mMediator;
 
     public CustomTabToolbarButtonsCoordinator(
+            Activity activity,
             CustomTabToolbar view,
             BrowserServicesIntentDataProvider intentDataProvider,
             Callback<CustomButtonParams> customButtonClickCallback,
             CustomTabMinimizeDelegate minimizeDelegate,
-            @Nullable CustomTabFeatureOverridesManager featureOverridesManager) {
-        CustomTabToolbarButtonsViewBinder viewBinder = new CustomTabToolbarButtonsViewBinder();
+            @Nullable CustomTabFeatureOverridesManager featureOverridesManager,
+            CustomTabToolbar.@Nullable OmniboxParams omniboxParams,
+            ActivityLifecycleDispatcher lifecycleDispatcher) {
         var customActionButtons =
                 getCustomActionButtonsModel(
-                        view.getContext(), intentDataProvider, customButtonClickCallback);
-        mMinimizeButtonAvailable =
-                MinimizedFeatureUtils.isMinimizedCustomTabAvailable(
-                                view.getContext(), featureOverridesManager)
-                        && MinimizedFeatureUtils.shouldEnableMinimizedCustomTabs(
-                                intentDataProvider);
-        mMinimizeDelegate = minimizeDelegate;
-        var minimizeButton =
-                getMinimizeButtonData(
-                        mMinimizeButtonAvailable && minimizeDelegate != null, minimizeDelegate);
+                        activity, intentDataProvider, customButtonClickCallback);
+        boolean closeButtonVisible = intentDataProvider.isCloseButtonEnabled();
         int closeButtonPosition = intentDataProvider.getCloseButtonPosition();
+
+        var closeButton =
+                closeButtonVisible
+                        ? getCloseButtonData(
+                                closeButtonVisible,
+                                intentDataProvider.getCloseButtonDrawable(),
+                                closeButtonPosition)
+                        : new CloseButtonData();
+
+        int toolbarWidth = CustomTabDimensionUtils.getInitialWidth(activity, intentDataProvider);
+        boolean omniboxEnabled = omniboxParams != null;
+        boolean titleVisible =
+                intentDataProvider.getTitleVisibilityState() == TitleVisibility.VISIBLE;
+        boolean isIncognito =
+                intentDataProvider.getCustomTabMode() == CustomTabProfileType.INCOGNITO;
         mModel =
                 CustomTabToolbarButtonsProperties.create(
-                        customActionButtons, minimizeButton, closeButtonPosition);
+                        /* customActionButtonsVisible= */ true,
+                        customActionButtons,
+                        // We will fill in the actual data in the mediator.
+                        new MinimizeButtonData(),
+                        closeButton,
+                        // TODO(crbug.com/402213312): Coordinate with MenuButtonCoordinator.
+                        /* menuButtonVisible= */ true,
+                        toolbarWidth,
+                        omniboxEnabled,
+                        titleVisible,
+                        isIncognito);
+        CustomTabToolbarButtonsViewBinder viewBinder = new CustomTabToolbarButtonsViewBinder();
         PropertyModelChangeProcessor.create(mModel, view, viewBinder);
         mCustomActionButtonsMcp =
                 new ListModelChangeProcessor<>(
@@ -74,6 +98,19 @@
                         viewBinder);
         mModel.get(CustomTabToolbarButtonsProperties.CUSTOM_ACTION_BUTTONS)
                 .addObserver(mCustomActionButtonsMcp);
+        mMediator =
+                new CustomTabToolbarButtonsMediator(
+                        mModel,
+                        activity,
+                        minimizeDelegate,
+                        intentDataProvider,
+                        featureOverridesManager,
+                        lifecycleDispatcher);
+        view.setOnNewWidthMeasuredListener(mMediator);
+    }
+
+    public void destroy() {
+        mMediator.destroy();
     }
 
     /**
@@ -96,11 +133,9 @@
         mModel.set(SIDE_SHEET_MAXIMIZE_BUTTON, buttonData);
     }
 
-    public void setMinimizeButtonVisible(boolean visible) {
+    public void setMinimizeButtonEnabled(boolean enabled) {
         assert ChromeFeatureList.sCctToolbarRefactor.isEnabled();
-        mModel.set(
-                MINIMIZE_BUTTON,
-                getMinimizeButtonData(mMinimizeButtonAvailable && visible, mMinimizeDelegate));
+        mMediator.setMinimizeButtonEnabled(enabled);
     }
 
     static PropertyListModel<PropertyModel, PropertyKey> getCustomActionButtonsModel(
@@ -124,12 +159,10 @@
         return listModel;
     }
 
-    private static MinimizeButtonData getMinimizeButtonData(
-            boolean visible, CustomTabMinimizeDelegate minimizeDelegate) {
-        return new MinimizeButtonData(
-                visible,
-                v -> {
-                    if (minimizeDelegate != null) minimizeDelegate.minimize();
-                });
+    private static CloseButtonData getCloseButtonData(
+            boolean visible,
+            Drawable icon,
+            @CustomTabsIntent.CloseButtonPosition int closeButtonPosition) {
+        return new CloseButtonData(visible, icon, closeButtonPosition);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsMediator.java
new file mode 100644
index 0000000..8cb77e5
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsMediator.java
@@ -0,0 +1,97 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.customtabs.features.toolbar;
+
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MINIMIZE_BUTTON;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.TOOLBAR_WIDTH;
+
+import android.app.Activity;
+import android.content.res.Configuration;
+
+import org.chromium.build.annotations.NullMarked;
+import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider;
+import org.chromium.chrome.browser.customtabs.CustomTabFeatureOverridesManager;
+import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.CustomTabMinimizeDelegate;
+import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.MinimizedFeatureUtils;
+import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbar.OnNewWidthMeasuredListener;
+import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MinimizeButtonData;
+import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
+import org.chromium.chrome.browser.lifecycle.ConfigurationChangedObserver;
+import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
+import org.chromium.ui.modelutil.PropertyModel;
+
+@NullMarked
+class CustomTabToolbarButtonsMediator
+        implements OnNewWidthMeasuredListener, ConfigurationChangedObserver {
+    private final PropertyModel mModel;
+    private final Activity mActivity;
+    private final CustomTabMinimizeDelegate mMinimizeDelegate;
+    private final ActivityLifecycleDispatcher mLifecycleDispatcher;
+
+    /** Whether the minimize button is available for the device and the current configuration. */
+    private final boolean mMinimizeButtonAvailable;
+
+    private boolean mMinimizeButtonEnabled;
+
+    CustomTabToolbarButtonsMediator(
+            PropertyModel model,
+            Activity activity,
+            CustomTabMinimizeDelegate minimizeDelegate,
+            BrowserServicesIntentDataProvider intentDataProvider,
+            CustomTabFeatureOverridesManager featureOverridesManager,
+            ActivityLifecycleDispatcher lifecycleDispatcher) {
+        mModel = model;
+        mActivity = activity;
+        mMinimizeButtonAvailable =
+                getMinimizeButtonAvailable(
+                        activity, minimizeDelegate, intentDataProvider, featureOverridesManager);
+        mMinimizeDelegate = minimizeDelegate;
+        mLifecycleDispatcher = lifecycleDispatcher;
+        mLifecycleDispatcher.register(this);
+        mMinimizeButtonEnabled = true;
+
+        // Set the initial real minimize button data.
+        mModel.set(MINIMIZE_BUTTON, getMinimizeButtonData());
+    }
+
+    public void destroy() {
+        mLifecycleDispatcher.unregister(this);
+    }
+
+    @Override
+    public void onNewWidthMeasured(int width) {
+        mModel.set(TOOLBAR_WIDTH, width);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        mModel.set(MINIMIZE_BUTTON, getMinimizeButtonData());
+    }
+
+    void setMinimizeButtonEnabled(boolean enabled) {
+        mMinimizeButtonEnabled = enabled;
+        mModel.set(MINIMIZE_BUTTON, getMinimizeButtonData());
+    }
+
+    private MinimizeButtonData getMinimizeButtonData() {
+        boolean isMultiWindow = MultiWindowUtils.getInstance().isInMultiWindowMode(mActivity);
+        return new MinimizeButtonData(
+                mMinimizeButtonAvailable && mMinimizeButtonEnabled && !isMultiWindow,
+                v -> {
+                    if (mMinimizeDelegate != null) mMinimizeDelegate.minimize();
+                });
+    }
+
+    private static boolean getMinimizeButtonAvailable(
+            Activity activity,
+            CustomTabMinimizeDelegate minimizeDelegate,
+            BrowserServicesIntentDataProvider intentDataProvider,
+            CustomTabFeatureOverridesManager featureOverridesManager) {
+        return MinimizedFeatureUtils.isMinimizedCustomTabAvailable(
+                        activity, featureOverridesManager)
+                && MinimizedFeatureUtils.shouldEnableMinimizedCustomTabs(intentDataProvider)
+                && minimizeDelegate != null;
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsProperties.java
index 8032b43a..be09c4e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsProperties.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsProperties.java
@@ -4,18 +4,22 @@
 
 package org.chromium.chrome.browser.customtabs.features.toolbar;
 
+import static androidx.browser.customtabs.CustomTabsIntent.CLOSE_BUTTON_POSITION_DEFAULT;
+
 import android.graphics.drawable.Drawable;
 import android.view.View.OnClickListener;
 
+import androidx.annotation.Px;
 import androidx.browser.customtabs.CustomTabsIntent.CloseButtonPosition;
 
 import org.chromium.chrome.browser.customtabs.features.partialcustomtab.PartialCustomTabSideSheetStrategy.MaximizeButtonCallback;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyListModel;
 import org.chromium.ui.modelutil.PropertyModel;
-import org.chromium.ui.modelutil.PropertyModel.ReadableIntPropertyKey;
+import org.chromium.ui.modelutil.PropertyModel.ReadableBooleanPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.ReadableObjectPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
+import org.chromium.ui.modelutil.PropertyModel.WritableIntPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey;
 
 public class CustomTabToolbarButtonsProperties {
@@ -38,6 +42,9 @@
         VISIBLE, ICON, CLICK_LISTENER, DESCRIPTION
     };
 
+    public static final WritableBooleanPropertyKey CUSTOM_ACTION_BUTTONS_VISIBLE =
+            new WritableBooleanPropertyKey();
+
     public static final ReadableObjectPropertyKey<PropertyListModel<PropertyModel, PropertyKey>>
             CUSTOM_ACTION_BUTTONS = new ReadableObjectPropertyKey<>();
 
@@ -59,7 +66,7 @@
         }
 
         /** Default constructor to hide the button. */
-        public SideSheetMaximizeButtonData() {
+        SideSheetMaximizeButtonData() {
             this(false, false, () -> false);
         }
     }
@@ -75,32 +82,96 @@
         /** The {@link OnClickListener} to notify of the click events. */
         public final OnClickListener clickListener;
 
+        // TODO: Maybe add default constr for not visible
         MinimizeButtonData(boolean visible, OnClickListener clickListener) {
             this.visible = visible;
             this.clickListener = clickListener;
         }
+
+        /** Default constructor to hide the button. */
+        MinimizeButtonData() {
+            this(false, v -> {});
+        }
     }
 
     /** Property key for the minimize button. */
     public static final WritableObjectPropertyKey<MinimizeButtonData> MINIMIZE_BUTTON =
             new WritableObjectPropertyKey<>();
 
-    /** Property key for the close button position. See {@link CloseButtonPosition}. */
-    public static final ReadableIntPropertyKey CLOSE_BUTTON_POSITION = new ReadableIntPropertyKey();
+    public static class CloseButtonData {
+        /** Whether the close button is visible. */
+        public final boolean visible;
+
+        /** The close button icon. */
+        public final Drawable icon;
+
+        /** The close button position. See {@link CloseButtonPosition}. */
+        public final @CloseButtonPosition int position;
+
+        // TODO: Maybe add default constr for not visible
+        CloseButtonData(boolean visible, Drawable icon, @CloseButtonPosition int position) {
+            this.visible = visible;
+            this.icon = icon;
+            this.position = position;
+        }
+
+        CloseButtonData() {
+            this(false, null, CLOSE_BUTTON_POSITION_DEFAULT);
+        }
+    }
+
+    /** Property key for the close button. */
+    public static final ReadableObjectPropertyKey<CloseButtonData> CLOSE_BUTTON =
+            new ReadableObjectPropertyKey<>();
+
+    /** Property key for whether the menu button is visible. */
+    public static final WritableBooleanPropertyKey MENU_BUTTON_VISIBLE =
+            new WritableBooleanPropertyKey();
+
+    /** Property key for the toolbar width. */
+    public static final WritableIntPropertyKey TOOLBAR_WIDTH = new WritableIntPropertyKey();
+
+    /** Property key for whether the omnibox is enabled. */
+    public static final ReadableBooleanPropertyKey OMNIBOX_ENABLED =
+            new ReadableBooleanPropertyKey();
+
+    /** Property key for whether the title is visible. */
+    public static final ReadableBooleanPropertyKey TITLE_VISIBLE = new ReadableBooleanPropertyKey();
+
+    /** Property key for whether the CCT is incognito. */
+    public static final ReadableBooleanPropertyKey IS_INCOGNITO = new ReadableBooleanPropertyKey();
 
     public static PropertyModel create(
+            boolean customActionButtonsVisible,
             PropertyListModel<PropertyModel, PropertyKey> customActionButtons,
             MinimizeButtonData minimizeButtonData,
-            @CloseButtonPosition int closeButtonPosition) {
+            CloseButtonData closeButton,
+            boolean menuButtonVisible,
+            @Px int toolbarWidth,
+            boolean omniboxEnabled,
+            boolean titleVisible,
+            boolean isIncognito) {
         return new PropertyModel.Builder(
+                        CUSTOM_ACTION_BUTTONS_VISIBLE,
                         CUSTOM_ACTION_BUTTONS,
                         SIDE_SHEET_MAXIMIZE_BUTTON,
                         MINIMIZE_BUTTON,
-                        CLOSE_BUTTON_POSITION)
+                        CLOSE_BUTTON,
+                        MENU_BUTTON_VISIBLE,
+                        TOOLBAR_WIDTH,
+                        OMNIBOX_ENABLED,
+                        TITLE_VISIBLE,
+                        IS_INCOGNITO)
+                .with(CUSTOM_ACTION_BUTTONS_VISIBLE, customActionButtonsVisible)
                 .with(CUSTOM_ACTION_BUTTONS, customActionButtons)
                 .with(SIDE_SHEET_MAXIMIZE_BUTTON, new SideSheetMaximizeButtonData())
                 .with(MINIMIZE_BUTTON, minimizeButtonData)
-                .with(CLOSE_BUTTON_POSITION, closeButtonPosition)
+                .with(CLOSE_BUTTON, closeButton)
+                .with(MENU_BUTTON_VISIBLE, menuButtonVisible)
+                .with(TOOLBAR_WIDTH, toolbarWidth)
+                .with(OMNIBOX_ENABLED, omniboxEnabled)
+                .with(TITLE_VISIBLE, titleVisible)
+                .with(IS_INCOGNITO, isIncognito)
                 .build();
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsViewBinder.java
index 1ee9a23..108cacb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsViewBinder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarButtonsViewBinder.java
@@ -4,20 +4,38 @@
 
 package org.chromium.chrome.browser.customtabs.features.toolbar;
 
-import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CLOSE_BUTTON_POSITION;
+import static androidx.browser.customtabs.CustomTabsIntent.CLOSE_BUTTON_POSITION_END;
+
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CLICK_LISTENER;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CLOSE_BUTTON;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CUSTOM_ACTION_BUTTONS;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.CUSTOM_ACTION_BUTTONS_VISIBLE;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.DESCRIPTION;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.ICON;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.IS_INCOGNITO;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MENU_BUTTON_VISIBLE;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.MINIMIZE_BUTTON;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.OMNIBOX_ENABLED;
 import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.SIDE_SHEET_MAXIMIZE_BUTTON;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.TITLE_VISIBLE;
+import static org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.TOOLBAR_WIDTH;
 
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
 import android.support.annotation.DrawableRes;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
 import android.widget.ImageButton;
 
+import androidx.annotation.Px;
+
 import org.chromium.build.annotations.Nullable;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.MinimizedFeatureUtils;
 import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarButtonsProperties.SideSheetMaximizeButtonData;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.ui.UiUtils;
@@ -34,24 +52,17 @@
                         PropertyListModel<PropertyModel, PropertyKey>,
                         CustomTabToolbar,
                         PropertyKey> {
+    private static final class ButtonPositioningParams {
+        public int availableWidth;
+        public int totalStartAlignedButtonWidth;
+        public int spacingFromLastStartAlignedButton;
+        public int totalEndAlignedButtonWidth;
+        public int spacingFromLastEndAlignedButton;
+    }
+
     @Override
     public void bind(PropertyModel model, CustomTabToolbar view, PropertyKey propertyKey) {
-        if (propertyKey == CUSTOM_ACTION_BUTTONS) {
-            view.setCustomActionButtonsListModel(model.get(CUSTOM_ACTION_BUTTONS));
-        } else if (propertyKey == SIDE_SHEET_MAXIMIZE_BUTTON) {
-            prepareSideSheetMaximizeButton(view, model.get(SIDE_SHEET_MAXIMIZE_BUTTON));
-            view.reinflateAndRepositionToolbarElements();
-        } else if (propertyKey == MINIMIZE_BUTTON) {
-            view.setMinimizeButtonEnabled(model.get(MINIMIZE_BUTTON).visible);
-            view.reinflateAndRepositionToolbarElements();
-            View minimizeButton = view.findViewById(R.id.custom_tabs_minimize_button);
-            if (minimizeButton != null) {
-                minimizeButton.setOnClickListener(model.get(MINIMIZE_BUTTON).clickListener);
-            }
-        } else if (propertyKey == CLOSE_BUTTON_POSITION) {
-            view.setCloseButtonPosition(model.get(CLOSE_BUTTON_POSITION));
-            view.reinflateAndRepositionToolbarElements();
-        }
+        inflateAndPositionToolbarElements(view, model);
     }
 
     @Override
@@ -60,7 +71,7 @@
             CustomTabToolbar view,
             int index,
             int count) {
-        view.reinflateAndRepositionToolbarElements();
+        inflateAndPositionToolbarElements(view, (PropertyModel) view.getTag(R.id.view_model));
     }
 
     @Override
@@ -69,7 +80,7 @@
             CustomTabToolbar view,
             int index,
             int count) {
-        view.reinflateAndRepositionToolbarElements();
+        inflateAndPositionToolbarElements(view, (PropertyModel) view.getTag(R.id.view_model));
     }
 
     @Override
@@ -86,6 +97,331 @@
         }
     }
 
+    /**
+     * Inflates and positions the buttons and the location bar within the toolbar based on the
+     * provided available width and the current button model. If there isn't enough space for all
+     * buttons, some buttons may be omitted based on their priority.
+     *
+     * <p>This method should be called every time the toolbar width changes.
+     *
+     * @param view The {@link CustomTabToolbar} that hosts the buttons.
+     * @param model The {@link PropertyModel} containing the needed properties.
+     */
+    private static void inflateAndPositionToolbarElements(
+            CustomTabToolbar view, PropertyModel model) {
+        var resources = view.getResources();
+        int defaultButtonWidth = resources.getDimensionPixelSize(R.dimen.toolbar_button_width);
+        int defaultIconWidth = resources.getDimensionPixelSize(R.dimen.toolbar_icon_default_width);
+        int iconSpacing = resources.getDimensionPixelSize(R.dimen.custom_tabs_toolbar_icon_spacing);
+        int availableWidth = model.get(TOOLBAR_WIDTH);
+        int locationBarMinWidth =
+                getLocationBarMinWidth(
+                        view.getResources(), model.get(OMNIBOX_ENABLED), model.get(TITLE_VISIBLE));
+        var posParams = new ButtonPositioningParams();
+        posParams.availableWidth = availableWidth;
+
+        if (model.get(IS_INCOGNITO)) {
+            int incognitoIconWidth =
+                    resources.getDimensionPixelSize(R.dimen.custom_tabs_incognito_icon_width);
+            locationBarMinWidth += incognitoIconWidth;
+
+            view.ensureIncognitoImageViewInflated();
+        }
+
+        posParams.availableWidth -= locationBarMinWidth;
+
+        if (view.getCloseButton() == null && model.get(CLOSE_BUTTON).visible) {
+            var closeButton = view.ensureCloseButtonInflated();
+            closeButton.setImageDrawable(model.get(CLOSE_BUTTON).icon);
+            closeButton.setOnLongClickListener(view);
+        }
+
+        var closeButton = view.getCloseButton();
+        if (closeButton != null) {
+            boolean isEndPosition = model.get(CLOSE_BUTTON).position == CLOSE_BUTTON_POSITION_END;
+            positionButton(
+                    closeButton,
+                    posParams,
+                    defaultButtonWidth,
+                    iconSpacing,
+                    defaultIconWidth,
+                    isEndPosition);
+        }
+
+        if (view.getMenuButton() == null && model.get(MENU_BUTTON_VISIBLE)) {
+            view.ensureMenuButtonInflated();
+        }
+
+        var menuButton = view.getMenuButton();
+        if (menuButton != null) {
+            boolean isEndPosition = model.get(CLOSE_BUTTON).position != CLOSE_BUTTON_POSITION_END;
+            positionButton(
+                    menuButton,
+                    posParams,
+                    defaultButtonWidth,
+                    iconSpacing,
+                    defaultIconWidth,
+                    isEndPosition);
+        }
+
+        var minimizeButtonData = model.get(MINIMIZE_BUTTON);
+        // Check if we have space for the minimize button and we should be showing it.
+        if (posParams.availableWidth >= defaultButtonWidth && minimizeButtonData.visible) {
+            var minimizeButton = view.ensureMinimizeButtonInflated();
+            minimizeButton.setOnClickListener(minimizeButtonData.clickListener);
+            Context context = view.getContext();
+            var d =
+                    UiUtils.getTintedDrawable(
+                            context,
+                            MinimizedFeatureUtils.getMinimizeIcon(),
+                            ChromeColors.getPrimaryIconTint(context, model.get(IS_INCOGNITO)));
+            minimizeButton.setTag(R.id.custom_tabs_toolbar_tintable, true);
+            minimizeButton.setImageDrawable(d);
+            minimizeButton.setOnLongClickListener(view);
+
+            // The minimize button is always start aligned.
+            positionButton(
+                    minimizeButton,
+                    posParams,
+                    defaultButtonWidth,
+                    iconSpacing,
+                    defaultIconWidth,
+                    /* isEndAligned= */ false);
+        } else if (view.getMinimizeButton() != null) {
+            view.getMinimizeButton().setVisibility(View.GONE);
+        }
+
+        // TODO(crbug.com/402213312): We need to think about how this should work with MTB.
+        FrameLayout customActionButtons = view.getCustomActionButtonsParent();
+        // TODO(crbug.com/402213312): Think of how we can optimize this so we don't reinflate all
+        // buttons any time if we add/remove one.
+        customActionButtons.removeAllViews();
+
+        if (model.get(CUSTOM_ACTION_BUTTONS_VISIBLE)) {
+            var models = model.get(CUSTOM_ACTION_BUTTONS);
+            for (var actionButtonModel : models) {
+                if (!maybeInflateAndPositionCustomButton(
+                        view, actionButtonModel, posParams, defaultButtonWidth, iconSpacing)) {
+                    break;
+                }
+            }
+        }
+
+        // Check if we have space for the side-sheet maximize button we should be showing it.
+        if (posParams.availableWidth >= defaultButtonWidth
+                && model.get(SIDE_SHEET_MAXIMIZE_BUTTON).visible) {
+            view.ensureSideSheetMaximizeButtonInflated();
+            var sideSheetMaximizeButtonData = model.get(SIDE_SHEET_MAXIMIZE_BUTTON);
+            prepareSideSheetMaximizeButton(view, sideSheetMaximizeButtonData);
+
+            // The maximize button is currently end aligned.
+            positionButton(
+                    view.getSideSheetMaximizeButton(),
+                    posParams,
+                    defaultButtonWidth,
+                    iconSpacing,
+                    defaultIconWidth,
+                    /* isEndAligned= */ true);
+        } else if (view.getSideSheetMaximizeButton() != null) {
+            view.getSideSheetMaximizeButton().setVisibility(View.GONE);
+        }
+
+        positionLocationBar(view, model, posParams);
+    }
+
+    /**
+     * Positions a button on the toolbar based on given arguments.
+     *
+     * @param button The button to be positioned.
+     * @param posParams A {@link ButtonPositioningParams} tracking the current state of the
+     *     positioning process. It will be modified by this method.
+     * @param defaultButtonWidth The default width of a toolbar button.
+     * @param iconSpacing The spacing between two adjacent icons.
+     * @param iconWidth The width of the icon within the button.
+     * @param isEndAligned True if the button is aligned to the end of the toolbar, false if aligned
+     *     to the start.
+     */
+    private static void positionButton(
+            View button,
+            ButtonPositioningParams posParams,
+            @Px int defaultButtonWidth,
+            @Px int iconSpacing,
+            int iconWidth,
+            boolean isEndAligned) {
+        int startPadding;
+        int endPadding;
+        // We calculate this button's padding based on the padding of the button that came before.
+        if (isEndAligned) {
+            assert posParams.spacingFromLastEndAlignedButton <= iconSpacing;
+            // Remaining space to reach iconSpacing.
+            endPadding = iconSpacing - posParams.spacingFromLastEndAlignedButton;
+            // Remaining space to reach the default button width. If the button will be wider than
+            // the default width because its icon is wider, make the start padding 0.
+            startPadding = Math.max(0, defaultButtonWidth - iconWidth - endPadding);
+            posParams.spacingFromLastEndAlignedButton = startPadding;
+        } else {
+            assert posParams.spacingFromLastStartAlignedButton <= iconSpacing;
+            // Similar to the block above, just start and end padding are reversed.
+            startPadding = iconSpacing - posParams.spacingFromLastStartAlignedButton;
+            endPadding = Math.max(0, defaultButtonWidth - iconWidth - startPadding);
+            posParams.spacingFromLastStartAlignedButton = endPadding;
+        }
+        int buttonWidth = iconWidth + startPadding + endPadding;
+        setHorizontalPadding(button, startPadding, endPadding);
+        // Adjust the layout gravity based on where the button is aligned, and offset it by
+        // the total width of the buttons we've previously placed.
+        setHorizontalLayoutParams(
+                button,
+                isEndAligned ? 0 : posParams.totalStartAlignedButtonWidth,
+                isEndAligned ? posParams.totalEndAlignedButtonWidth : 0,
+                isEndAligned);
+        if (isEndAligned) {
+            // We've placed a button at the end.
+            posParams.totalEndAlignedButtonWidth += buttonWidth;
+        } else {
+            // We've placed a button at the start.
+            posParams.totalStartAlignedButtonWidth += buttonWidth;
+        }
+        posParams.availableWidth -= buttonWidth;
+    }
+
+    /**
+     * Positions a custom action button on the toolbar based on given arguments.
+     *
+     * @param view The {@link CustomTabToolbar} that hosts the buttons.
+     * @param model The custom action button {@link PropertyModel} containing the needed properties.
+     * @param posParams A {@link ButtonPositioningParams} tracking the current state of the
+     *     positioning process. It will be modified by this method.
+     * @param defaultButtonWidth The default width of a toolbar button.
+     * @param iconSpacing The spacing between two adjacent icons.
+     */
+    private static boolean maybeInflateAndPositionCustomButton(
+            CustomTabToolbar view,
+            PropertyModel model,
+            ButtonPositioningParams posParams,
+            @Px int defaultButtonWidth,
+            @Px int iconSpacing) {
+        Drawable drawable = model.get(ICON);
+        Resources resources = view.getResources();
+        // The height will be scaled to match spec while keeping the aspect ratio, so get the scaled
+        // width through that.
+        int sourceHeight = drawable.getIntrinsicHeight();
+        int sourceScaledHeight = resources.getDimensionPixelSize(R.dimen.toolbar_icon_height);
+        int sourceWidth = drawable.getIntrinsicWidth();
+        int sourceScaledWidth = sourceWidth * sourceScaledHeight / sourceHeight;
+
+        // Remaining space to reach iconSpacing to make up to the required spacing.
+        assert posParams.spacingFromLastEndAlignedButton <= iconSpacing;
+        int endPadding = iconSpacing - posParams.spacingFromLastEndAlignedButton;
+        // Remaining space to reach at least the default button width. If the button will be wider
+        // than the default width because its icon is wider, make the start padding 0.
+        int startPadding = Math.max(0, defaultButtonWidth - sourceScaledWidth - endPadding);
+        int buttonWidth = sourceScaledWidth + startPadding + endPadding;
+
+        if (buttonWidth > posParams.availableWidth) return false;
+
+        ImageButton button =
+                (ImageButton)
+                        LayoutInflater.from(view.getContext())
+                                .inflate(
+                                        R.layout.custom_tabs_toolbar_button,
+                                        view.getCustomActionButtonsParent(),
+                                        false);
+        button.setOnLongClickListener(view);
+        button.setOnClickListener(model.get(CLICK_LISTENER));
+        button.setContentDescription(model.get(DESCRIPTION));
+
+        int minPadding = resources.getDimensionPixelSize(R.dimen.min_toolbar_icon_side_padding);
+
+        int sidePadding = Math.max((2 * sourceScaledHeight - sourceScaledWidth) / 2, minPadding);
+        int topPadding = button.getPaddingTop();
+        int bottomPadding = button.getPaddingBottom();
+        button.setPadding(sidePadding, topPadding, sidePadding, bottomPadding);
+        button.setImageDrawable(drawable);
+
+        // Add the view at the beginning of the list. This isn't reflected in how the button is
+        // positioned; it's only for keeping the index aligned with the params list.
+        view.getCustomActionButtonsParent().addView(button, 0);
+        positionButton(
+                button,
+                posParams,
+                defaultButtonWidth,
+                iconSpacing,
+                sourceScaledWidth,
+                /* isEndAligned= */ true);
+
+        return true;
+    }
+
+    /**
+     * Positions the location bar on the toolbar based on given arguments.
+     *
+     * @param view The {@link CustomTabToolbar} that hosts the buttons.
+     * @param model The custom action button {@link PropertyModel} containing the needed properties.
+     * @param posParams A {@link ButtonPositioningParams} tracking the current state of the
+     *     positioning process. It will be modified by this method.
+     */
+    private static void positionLocationBar(
+            CustomTabToolbar view, PropertyModel model, ButtonPositioningParams posParams) {
+        var locationBar = view.findViewById(R.id.location_bar_frame_layout);
+        Resources resources = view.getResources();
+        var locationBarLp = ((ViewGroup.MarginLayoutParams) locationBar.getLayoutParams());
+        locationBarLp.setMarginStart(posParams.totalStartAlignedButtonWidth);
+        locationBarLp.setMarginEnd(posParams.totalEndAlignedButtonWidth);
+        locationBar.setLayoutParams(locationBarLp);
+
+        var titleUrlContainer = view.findViewById(R.id.title_url_container);
+        var titleUrlLp = ((ViewGroup.MarginLayoutParams) titleUrlContainer.getLayoutParams());
+        if (model.get(OMNIBOX_ENABLED)) {
+            // TODO(crbug.com/402213312): Revisit this when cleaning up CCTNestedSecurityIcon.
+            // The security button is static when omnibox is enabled, so offset the url bar for it.
+            int buttonWidth = resources.getDimensionPixelSize(R.dimen.toolbar_button_width);
+            titleUrlLp.leftMargin += buttonWidth;
+        }
+        if (model.get(IS_INCOGNITO)) {
+            int incognitoIconWidth =
+                    resources.getDimensionPixelSize(R.dimen.custom_tabs_incognito_icon_width);
+            titleUrlLp.leftMargin += incognitoIconWidth;
+        }
+        titleUrlContainer.setLayoutParams(titleUrlLp);
+
+        // Ensure correct spacing between the last start aligned button and the location bar.
+        int desiredSpace =
+                resources.getDimensionPixelSize(R.dimen.custom_tabs_location_bar_start_spacing);
+        int remainingSpace =
+                Math.max(0, desiredSpace - posParams.spacingFromLastStartAlignedButton);
+        setHorizontalPadding(locationBar, remainingSpace, locationBar.getPaddingEnd());
+    }
+
+    private static void setHorizontalPadding(View view, @Px int startPadding, @Px int endPadding) {
+        view.setPaddingRelative(
+                startPadding, view.getPaddingTop(), endPadding, view.getPaddingBottom());
+    }
+
+    private static void setHorizontalLayoutParams(
+            View view, @Px int startMargin, @Px int endMargin, boolean isEndAligned) {
+        var lp = (FrameLayout.LayoutParams) view.getLayoutParams();
+        lp.setMarginStart(startMargin);
+        lp.setMarginEnd(endMargin);
+        int horizontalGravity = isEndAligned ? Gravity.END : Gravity.START;
+        lp.gravity = Gravity.CENTER_VERTICAL | horizontalGravity;
+        view.setLayoutParams(lp);
+    }
+
+    @Px
+    private static int getLocationBarMinWidth(
+            Resources resources, boolean omniboxEnabled, boolean titleVisible) {
+        int locationBarMinWidth =
+                resources.getDimensionPixelSize(R.dimen.location_bar_min_url_width);
+        if (omniboxEnabled) {
+            locationBarMinWidth += resources.getDimensionPixelSize(R.dimen.toolbar_button_width);
+        } else if (!titleVisible) {
+            locationBarMinWidth +=
+                    resources.getDimensionPixelSize(R.dimen.custom_tabs_security_icon_width);
+        }
+        return locationBarMinWidth;
+    }
+
     private static void prepareSideSheetMaximizeButton(
             CustomTabToolbar view, SideSheetMaximizeButtonData data) {
         ImageButton button = view.findViewById(R.id.custom_tabs_sidepanel_maximize);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java
index 2bd4a8b..a75ac75 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java
@@ -78,7 +78,7 @@
         int MAX_VALUE = 7;
     }
 
-    // LINT.ThenChange(/tools/metrics/histograms/enums.xml:PrivacySandboxSurveyTypesEnums)
+    // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxSurveyTypesEnums)
 
     // LINT.IfChange(PrivacySandboxCctAdsNoticeSurveyFailures)
     /** Represents the possible failures when attempting to surface a CCT ads notice survey. */
@@ -115,7 +115,7 @@
         int MAX_VALUE = INVALID_ROW_CONTROL_SURVEY_CONFIG;
     }
 
-    // LINT.ThenChange(/tools/metrics/histograms/enums.xml:PrivacySandboxCctAdsNoticeSurveyFailures)
+    // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxCctAdsNoticeSurveyFailures)
 
     // Maps {@link PrivacySandboxSurveyType} to their survey triggerid.
     private static final Map<Integer, String> sSurveyTriggers =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
index f2d9304..cc776153 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -284,7 +284,9 @@
 
         menu.findItem(R.id.add_to_group_menu_id)
                 .setVisible(ChromeFeatureList.sTabGroupParityBottomSheetAndroid.isEnabled())
-                .setTitle(getAddToGroupMenuItemString());
+                .setTitle(
+                        getAddToGroupMenuItemString(
+                                currentTab != null ? currentTab.getTabGroupId() : null));
 
         // Enable image descriptions if touch exploration is currently enabled, but not on the
         // native NTP.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 0d42c3c..1bb7dca 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -24,6 +24,7 @@
 import android.view.View.OnLayoutChangeListener;
 import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
 import android.view.ViewStub;
 
 import androidx.activity.BackEventCompat;
@@ -370,6 +371,7 @@
 
     private @Nullable StripLayoutHelperManager mStripLayoutHelperManager;
     private @Nullable MiniOriginBarController mMiniOriginBarController;
+    private @Nullable ToolbarPositionController mToolbarPositionController;
     private @Nullable UndoBarThrottle mUndoBarThrottle;
 
     private CustomTabCount mCustomTabCount;
@@ -1622,7 +1624,11 @@
         if (extensionToolbarStub != null) {
             mExtensionToolbarManager =
                     ExtensionToolbarManager.maybeCreate(
-                            mActivity, extensionToolbarStub, profileSupplier, tabProvider);
+                            mActivity,
+                            extensionToolbarStub,
+                            profileSupplier,
+                            tabProvider,
+                            browsingModeThemeColorProvider);
         }
 
         TraceEvent.end("ToolbarManager.ToolbarManager");
@@ -1672,23 +1678,27 @@
                         mControlContainer.getView());
         ObservableSupplierImpl<Integer> controlContainerTranslationSupplier =
                 new ObservableSupplierImpl<>(0);
-        new ToolbarPositionController(
-                mBrowserControlsSizer,
-                ContextUtils.getAppSharedPreferences(),
-                mIsNtpShowingSupplier,
-                mIsTabSwitcherFinishedShowingSupplier,
-                mOmniboxFocusStateSupplier,
-                mFormFieldFocusedSupplier,
-                mFindInPageShowingSupplier,
-                keyboardAccessoryStateSupplier,
-                mWindowAndroid.getKeyboardDelegate(),
-                mControlContainer,
-                mBottomControlsStacker,
-                mBottomToolbarControlsOffsetSupplier,
-                mProgressBarContainer,
-                controlContainerTranslationSupplier,
-                new Handler(Looper.getMainLooper()),
-                mActivity);
+        ObservableSupplierImpl<Integer> controlContainerHeightSupplier =
+                new ObservableSupplierImpl<>(LayoutParams.WRAP_CONTENT);
+        mToolbarPositionController =
+                new ToolbarPositionController(
+                        mBrowserControlsSizer,
+                        ContextUtils.getAppSharedPreferences(),
+                        mIsNtpShowingSupplier,
+                        mIsTabSwitcherFinishedShowingSupplier,
+                        mOmniboxFocusStateSupplier,
+                        mFormFieldFocusedSupplier,
+                        mFindInPageShowingSupplier,
+                        keyboardAccessoryStateSupplier,
+                        mWindowAndroid.getKeyboardDelegate(),
+                        mControlContainer,
+                        mBottomControlsStacker,
+                        mBottomToolbarControlsOffsetSupplier,
+                        mProgressBarContainer,
+                        controlContainerTranslationSupplier,
+                        controlContainerHeightSupplier,
+                        new Handler(Looper.getMainLooper()),
+                        mActivity);
         if (ChromeFeatureList.sMiniOriginBar.isEnabled()) {
             mMiniOriginBarController =
                     new MiniOriginBarController(
@@ -1701,6 +1711,7 @@
                             mBrowserControlsSizer,
                             mWindowAndroid.getInsetObserver(),
                             controlContainerTranslationSupplier,
+                            controlContainerHeightSupplier,
                             keyboardAccessoryStateSupplier.getIsSheetShowingSupplier());
         }
     }
@@ -2386,6 +2397,11 @@
             mDesktopWindowStateManager.removeObserver(mControlContainer);
         }
 
+        if (mToolbarPositionController != null) {
+            mToolbarPositionController.destroy();
+            mToolbarPositionController = null;
+        }
+
         if (mMiniOriginBarController != null) {
             mMiniOriginBarController.destroy();
             mMiniOriginBarController = null;
diff --git a/chrome/android/javatests/BUILD.gn b/chrome/android/javatests/BUILD.gn
index 380762e9..cb95919 100644
--- a/chrome/android/javatests/BUILD.gn
+++ b/chrome/android/javatests/BUILD.gn
@@ -297,6 +297,7 @@
     "//components/embedder_support/android:simple_factory_key_java",
     "//components/embedder_support/android:util_java",
     "//components/embedder_support/android:web_contents_delegate_java",
+    "//components/enterprise/connectors/core:connectors_java_enums",
     "//components/external_intents/android:java",
     "//components/external_intents/android:test_support_java",
     "//components/externalauth/android:java",
@@ -955,6 +956,7 @@
   resources_package = "org.chromium.chrome.test"
 
   sources = [
+    "src/org/chromium/chrome/browser/password_manager/EnterpriseReportingIntegrationTest.java",
     "src/org/chromium/chrome/browser/password_manager/PasswordCheckupIntegrationTest.java",
     "src/org/chromium/chrome/browser/password_manager/PasswordManagerDialogTest.java",
     "src/org/chromium/chrome/browser/password_manager/PasswordSavingIntegrationTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/app/appmenu/TabbedAppMenuPTTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/app/appmenu/TabbedAppMenuPTTest.java
index 09fabb5..8054b06 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/app/appmenu/TabbedAppMenuPTTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/app/appmenu/TabbedAppMenuPTTest.java
@@ -52,7 +52,7 @@
     @Rule
     public final ChromeRenderTestRule mRenderTestRule =
             ChromeRenderTestRule.Builder.withPublicCorpus()
-                    .setRevision(1)
+                    .setRevision(2)
                     .setDescription("App menu")
                     .setBugComponent(ChromeRenderTestRule.Component.UI_BROWSER_MOBILE_APP_MENU)
                     .build();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/password_manager/EnterpriseReportingIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/password_manager/EnterpriseReportingIntegrationTest.java
new file mode 100644
index 0000000..4bacdd0
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/password_manager/EnterpriseReportingIntegrationTest.java
@@ -0,0 +1,161 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.password_manager;
+
+import static org.hamcrest.CoreMatchers.endsWith;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assume.assumeTrue;
+
+import androidx.test.filters.LargeTest;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.AndroidInfo;
+import org.chromium.base.CommandLine;
+import org.chromium.base.test.util.Batch;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Features.EnableFeatures;
+import org.chromium.base.test.util.HistogramWatcher;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.policy.CloudManagementSharedPreferences;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.transit.ChromeTransitTestRules;
+import org.chromium.chrome.test.transit.FreshCtaTransitTestRule;
+import org.chromium.chrome.test.transit.page.WebPageStation;
+import org.chromium.components.enterprise.connectors.EnterpriseReportingEventType;
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.content_public.browser.test.util.DOMUtils;
+import org.chromium.net.test.util.TestWebServer;
+
+import java.util.concurrent.TimeoutException;
+
+/** Test that password-related events are reported to an enterprise connector. */
+@RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add({
+    ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+    "enable-chrome-browser-cloud-management",
+})
+@EnableFeatures("EnterpriseSecurityEventReportingOnAndroid")
+@Batch(Batch.PER_CLASS)
+public class EnterpriseReportingIntegrationTest {
+    @Rule
+    public FreshCtaTransitTestRule mActivityTestRule =
+            ChromeTransitTestRules.freshChromeTabbedActivityRule();
+
+    private TestWebServer mReportingServer;
+
+    private static final String PASSWORD_FORM_URL =
+            "/chrome/test/data/password/simple_password.html";
+    private static final String USERNAME_FIELD_ID = "username_field";
+    private static final String PASSWORD_NODE_ID = "password_field";
+    private static final String USERNAME_TEXT = "username@domain.com";
+    private static final String PASSWORD_TEXT = "password";
+    private static final String NEW_PASSWORD_TEXT = "new password";
+    private static final String SUBMIT_BUTTON_ID = "input_submit_button";
+
+    private static final String FAKE_GOOGLE_API_KEY = "fake-google-api-key";
+    private static final String FAKE_DM_TOKEN = "fake-dm-token";
+
+    private static final String REPORTING_ENDPOINT = "/?key=" + FAKE_GOOGLE_API_KEY;
+    private static final String REPORTING_POLICY_NAME = "OnSecurityEventEnterpriseConnector";
+    private static final String REPORTING_SUCCESS_HISTOGRAM =
+            "Enterprise.ReportingEventUploadSuccess";
+    private static final String REPORTING_FAILURE_HISTOGRAM =
+            "Enterprise.ReportingEventUploadFailure";
+
+    @Before
+    public void setUp() throws Exception {
+        mReportingServer = TestWebServer.start();
+        // For simplicity, omit the `UploadEventsResponse` response, which the client doesn't look
+        // at.
+        mReportingServer.setEmptyResponse(REPORTING_ENDPOINT);
+
+        // For authenticating to the fake reporting server.
+        CloudManagementSharedPreferences.saveDmToken(FAKE_DM_TOKEN);
+
+        CommandLine command_line = CommandLine.getInstance();
+        command_line.appendSwitchWithValue("realtime-reporting-url", mReportingServer.getBaseUrl());
+        command_line.appendSwitchWithValue("gaia-config-contents", buildGaiaConfig().toString());
+        // Stop the browser from trying to talk to the real DM server. The command line will set the
+        // policy needed, so a 404 will suffice.
+        command_line.appendSwitchWithValue(
+                "device-management-url", mReportingServer.getBaseUrl() + "does-not-exist");
+    }
+
+    @After
+    public void tearDown() {
+        mReportingServer.shutdown();
+    }
+
+    private JSONObject buildGaiaConfig() throws JSONException {
+        var apiKeys = new JSONObject().put("GOOGLE_API_KEY", FAKE_GOOGLE_API_KEY);
+        return new JSONObject().put("api_keys", apiKeys);
+    }
+
+    private JSONObject buildSecurityEventReportingPolicy(String eventName) throws JSONException {
+        var eventDetails = new JSONObject().put("name", eventName).append("url_patterns", "*");
+        return new JSONObject()
+                .append("enabled_event_names", eventName)
+                .append("enabled_opt_in_events", eventDetails)
+                .put("service_provider", "google");
+    }
+
+    /** Build a histogram watcher that expects one successfully uploaded report and no failures. */
+    private HistogramWatcher buildReportUploadWatcher(@EnterpriseReportingEventType int eventType) {
+        return HistogramWatcher.newBuilder()
+                .expectIntRecord(REPORTING_SUCCESS_HISTOGRAM, eventType)
+                .expectNoRecords(REPORTING_FAILURE_HISTOGRAM)
+                .build();
+    }
+
+    /** Parse the last security event report received, if any. */
+    private JSONObject parseLastReport() throws JSONException {
+        TestWebServer.HTTPRequest request = mReportingServer.getLastRequest(REPORTING_ENDPOINT);
+        if (request == null) {
+            return null;
+        }
+        var body = new String(request.getBody());
+        return new JSONObject(body);
+    }
+
+    @Test
+    @LargeTest
+    public void testLoginEventReported() throws JSONException, TimeoutException {
+        assumeTrue("Can set policy from command line", AndroidInfo.isDebugAndroid());
+
+        var policyMap = new JSONObject();
+        policyMap.append(REPORTING_POLICY_NAME, buildSecurityEventReportingPolicy("loginEvent"));
+        CommandLine.getInstance().appendSwitchWithValue("policy", policyMap.toString());
+        HistogramWatcher watcher =
+                buildReportUploadWatcher(EnterpriseReportingEventType.LOGIN_EVENT);
+
+        WebPageStation page = mActivityTestRule.startOnTestServerUrl(PASSWORD_FORM_URL);
+        WebContents webContents = page.webContentsElement.get();
+        DOMUtils.enterInputIntoTextField(webContents, USERNAME_FIELD_ID, USERNAME_TEXT);
+        DOMUtils.enterInputIntoTextField(webContents, PASSWORD_NODE_ID, PASSWORD_TEXT);
+        DOMUtils.clickNodeWithJavaScript(webContents, SUBMIT_BUTTON_ID);
+        watcher.pollInstrumentationThreadUntilSatisfied();
+
+        JSONObject report = parseLastReport();
+        assertNotNull(report);
+        assertEquals("Android", report.getJSONObject("device").getString("osPlatform"));
+        var events = report.getJSONArray("events");
+        assertEquals(1, events.length());
+        var eventDetails = events.getJSONObject(0).getJSONObject("loginEvent");
+        assertEquals(
+                mActivityTestRule.getTestServer().getURL(PASSWORD_FORM_URL),
+                eventDetails.getString("url"));
+        // The username portion of the login will be masked, but the domain part shouldn't be.
+        assertThat(eventDetails.getString("loginUserName"), endsWith("@domain.com"));
+    }
+}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
index 3525c92..dbeb528 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
@@ -222,6 +222,7 @@
     private final TestTabModel mModel = spy(new TestTabModel());
     private StripLayoutHelper mStripLayoutHelper;
     private boolean mIncognito;
+    private static final int NEW_ANIM_TAB_RESIZE_MS = 200;
     private static final String[] TEST_TAB_TITLES = {"Tab 1", "Tab 2", "Tab 3", "", null};
     private static final String EXPECTED_NO_MARGIN = "The tab should not have a trailing margin.";
     private static final String EXPECTED_TAB = "The view should be a tab.";
@@ -6239,6 +6240,59 @@
                 /* expectedScrollDelta= */ StripLayoutHelper.SCROLL_SPEED_FACTOR);
     }
 
+    @Test
+    @EnableFeatures({ChromeFeatureList.TABLET_TAB_STRIP_ANIMATION})
+    public void testTabCreated_HorizontalAnimation() {
+        // Initialize with default amount of tabs. Clear any animations.
+        initializeTest(false, false, 3);
+        mStripLayoutHelper.finishAnimationsAndPushTabUpdates();
+        assertNull(
+                "Animation should not be running.",
+                mStripLayoutHelper.getRunningAnimatorForTesting());
+
+        // Act: Create new tab in model and trigger update in tab strip.
+        mModel.addTab("new tab");
+        mStripLayoutHelper.tabCreated(TIMESTAMP, 5, 3, true, false, false);
+    }
+
+    @Test
+    @EnableFeatures({ChromeFeatureList.TABLET_TAB_STRIP_ANIMATION})
+    public void testTabClosing_NoTabResize_HorizontalAnimation() {
+        // Arrange
+        int tabCount = 10;
+        initializeTest(false, false, 9, tabCount);
+        StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting();
+        mStripLayoutHelper.onSizeChanged(
+                SCREEN_WIDTH, SCREEN_HEIGHT, false, TIMESTAMP, PADDING_LEFT, PADDING_RIGHT, 0f);
+        setupForAnimations();
+
+        mStripLayoutHelper.updateLayout(TIMESTAMP);
+
+        // Act: Call on close tab button handler.
+        mStripLayoutHelper.handleCloseButtonClick(
+                tabs[9], MotionEventUtils.MOTION_EVENT_BUTTON_NONE);
+
+        // Assert: One set of animations started.
+        assertFalse(
+                "MultiStepAnimations should not have started.",
+                mStripLayoutHelper.isMultiStepCloseAnimationsRunningForTesting());
+
+        // Act: End the tab closing animations to apply final values.
+        Animator runningAnimator = mStripLayoutHelper.getRunningAnimatorForTesting();
+        assertNotNull(runningAnimator);
+        runningAnimator.end();
+
+        // Assert: Tab is closed.
+        int expectedTabCount = 9;
+        assertEquals(
+                "Unexpected tabs count",
+                expectedTabCount,
+                mStripLayoutHelper.getStripLayoutTabsForTesting().length);
+
+        // Assert: There should only be one set of animations.
+        assertFalse(mStripLayoutHelper.getRunningAnimatorForTesting().isRunning());
+    }
+
     /**
      * Tests {@link StripLayoutHelper#onScroll(float, float)}
      *
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinatorUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinatorUnitTest.java
index e7639f6..d33b445 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinatorUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TabContextMenuCoordinatorUnitTest.java
@@ -175,7 +175,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
@@ -218,7 +218,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
@@ -261,7 +261,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
@@ -303,7 +303,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
@@ -334,7 +334,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
@@ -371,7 +371,7 @@
 
         // List item 1
         assertEquals(
-                R.string.add_tab_to_group,
+                R.string.menu_add_tab_to_group,
                 modelList.get(0).model.get(ListMenuItemProperties.TITLE_ID));
         assertEquals(
                 R.id.add_to_tab_group,
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarUnitTest.java
index d402ac4..fb2f395e 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarUnitTest.java
@@ -33,7 +33,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.MeasureSpec;
-import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.FrameLayout.LayoutParams;
 import android.widget.ImageButton;
@@ -200,23 +199,7 @@
                 null,
                 null);
 
-        if (ChromeFeatureList.sCctToolbarRefactor.isEnabled()) {
-            mToolbar.initializeToolbar(
-                    mActivity,
-                    mIntentDataProvider,
-                    mFeatureOverridesManager,
-                    mMinimizeDelegate,
-                    null);
-            var model =
-                    CustomTabToolbarButtonsCoordinator.getCustomActionButtonsModel(
-                            mActivity, mIntentDataProvider, params -> {});
-            mToolbar.setCustomActionButtonsListModel(model);
-            // Minimize button is enabled by default.
-            mToolbar.setMinimizeButtonEnabled(true);
-            mToolbar.reinflateAndRepositionToolbarElements();
-        } else {
-            mToolbar.setFeatureOverridesManager(mFeatureOverridesManager);
-        }
+        mToolbar.setFeatureOverridesManager(mFeatureOverridesManager);
 
         mLocationBar =
                 (CustomTabLocationBar)
@@ -636,30 +619,25 @@
 
     @Test
     @EnableFeatures({ChromeFeatureList.CCT_TOOLBAR_REFACTOR})
-    @Config(qualifiers = "w200dp")
-    public void testLayoutForWidth_200dp() {
-        View closeButton = mToolbar.findViewById(R.id.close_button);
-        View menuButton = mToolbar.findViewById(R.id.menu_button_wrapper);
-        View minimizeButton = mToolbar.findViewById(R.id.custom_tabs_minimize_button);
-        ViewGroup actionButtons = mToolbar.findViewById(R.id.action_buttons);
-        assertNotNull(closeButton);
-        assertNotNull(menuButton);
-        assertNull(minimizeButton);
-        assertEquals(0, actionButtons.getChildCount());
-    }
+    public void testInflatesButtons() {
+        assertNull(mToolbar.getMenuButton());
+        assertNotNull(mToolbar.ensureMenuButtonInflated());
+        assertEquals(View.VISIBLE, mToolbar.getMenuButton().getVisibility());
 
-    @Test
-    @EnableFeatures({ChromeFeatureList.CCT_TOOLBAR_REFACTOR})
-    @Config(qualifiers = "w400dp")
-    public void testLayoutForWidth_400dp() {
-        View closeButton = mToolbar.findViewById(R.id.close_button);
-        View menuButton = mToolbar.findViewById(R.id.menu_button_wrapper);
-        View minimizeButton = mToolbar.findViewById(R.id.custom_tabs_minimize_button);
-        ViewGroup actionButtons = mToolbar.findViewById(R.id.action_buttons);
-        assertNotNull(closeButton);
-        assertNotNull(menuButton);
-        assertNotNull(minimizeButton);
-        assertEquals(1, actionButtons.getChildCount());
+        assertNull(mToolbar.getCloseButton());
+        assertNotNull(mToolbar.ensureCloseButtonInflated());
+        assertEquals(View.VISIBLE, mToolbar.getCloseButton().getVisibility());
+
+        assertNull(mToolbar.getMinimizeButton());
+        assertNotNull(mToolbar.ensureMinimizeButtonInflated());
+        assertEquals(View.VISIBLE, mToolbar.getMinimizeButton().getVisibility());
+
+        assertNull(mToolbar.getSideSheetMaximizeButton());
+        assertNotNull(mToolbar.ensureSideSheetMaximizeButtonInflated());
+        assertEquals(View.VISIBLE, mToolbar.getSideSheetMaximizeButton().getVisibility());
+
+        var incognitoImageView = mToolbar.ensureIncognitoImageViewInflated();
+        assertEquals(View.VISIBLE, incognitoImageView.getVisibility());
     }
 
     private void assertUrlAndTitleVisible(boolean titleVisible, boolean urlVisible) {
diff --git a/chrome/app/certificate_manager.grdp b/chrome/app/certificate_manager.grdp
index 65bff99f..23a87c654 100644
--- a/chrome/app/certificate_manager.grdp
+++ b/chrome/app/certificate_manager.grdp
@@ -222,4 +222,76 @@
       Copy certificate hash for <ph name="CERT_NAME">$1<ex>GTS Root R2</ex></ph>
     </message>
   </if>
+
+  <if expr="is_chromeos">
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER" desc="Header that lists the certificate provisioning processes.">
+      Certificates are being provisioned for these certificate profiles
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH" desc="Text on the button to refresh the status of a certificate provisioning process.">
+      Refresh
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET" desc="Text on the button to reset a certificate provisioning process.">
+      Reset
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS" desc="Text on the button to show debug details about a certificate provisioning process and title of the dialog that shows the details.">
+      Details
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED" desc="Text on the button to show advanced entries on the certificate provisioning details dialog.">
+      Advanced
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR" desc="Status description of a certificate provisioning process when the client is preparing the Certificate signing request (CSR) ">
+      Preparing certificate signing request
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING" desc="Status description of a certificate provisioning process when the client is waiting for the server to aid in preparation of the Certificate signing request (CSR)">
+      Preparing certificate signing request (waiting on server)
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA" desc="Status description of a certificate provisioning process when the client is waiting for a certificate to be issued">
+      Waiting for the CA to issue a certificate
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS" desc="Status description of a certificate provisioning process that has succeeded">
+      Success
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE" desc="Status description of a certificate provisioning process that has failed">
+      Failure
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED" desc="Status description of a certificate provisioning process that has been canceled">
+      Canceled
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION" desc="Status description of a certificate provisioning process that is waiting for the next operation">
+      Waiting for the next operation
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Authorize instruction">
+      <ph name="AUTHORIZE_INSTRUCTION_NAME">"Authorize"</ph> instruction received
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Sign Data instruction">
+      <ph name="PROOF_OF_POSSESSION_INSTRUCTION_NAME">"Proof of Possession"</ph> instruction received
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Import Certificate instruction">
+      <ph name="IMPORT_CERTIFICATE__INSTRUCTION_NAME">"Import Certificate"</ph> instruction received
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID" desc="Label of the field that displays the id of a certificate provisioning process">
+      Process ID
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME" desc="Label of the field that displays the human-readable client certificate profile name of a certificate provisioning process">
+      Certificate Profile Name
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID" desc="Label of the field that displays the internal ID of the client certificate profile of a certificate provisioning process">
+      Certificate Profile ID
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS" desc="Label of the field that displays certificate provisioning status">
+      Status
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID" desc="Label of the field that displays certificate provisioning status id, which is a number (e.g. 6)">
+      Status Id
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE" desc="Label of the field that displays when a certificate provisioning process had the last update">
+      Last Update
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS" desc="Label of the field that is displayed when a certificate provisioning process last update was unsuccessful">
+      Last Unsuccessful Update
+    </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE" desc="Status description of a certificate provisioning process that has failed while contacting the DMServer">
+      Connection to Device Management Server failed with status '<ph name="STATUS_TEXT">$1<ex>Temporary server error</ex></ph>' at <ph name="FAILURE_TIME">$2<ex>Mon, 14 Mar 2022 17:35:00 GMT</ex></ph>
+    </message>
+  </if>
 </grit-part>
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS.png.sha1
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA.png.sha1 b/chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA.png.sha1
similarity index 100%
rename from chrome/app/settings_strings_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA.png.sha1
rename to chrome/app/certificate_manager_grdp/IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA.png.sha1
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd
index aa807fb6..82f18d52 100644
--- a/chrome/app/chromium_strings.grd
+++ b/chrome/app/chromium_strings.grd
@@ -2168,9 +2168,15 @@
         <message name="IDS_FRE_DEFAULT_BROWSER_TITLE" desc="Title for the page that prompts user to set Chromium as their default browser in the first run experience.">
           Set Chromium as your default browser
         </message>
+        <message name="IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE" desc="Title for the page that prompts user to set Chromium as their default browser and pin to taskbar in the first run experience.">
+          Use Chromium by default and get it pinned
+        </message>
         <message name="IDS_FRE_DEFAULT_BROWSER_SUBTITLE_NEW" desc="Subtitle for the page that prompts user to set Chromium as their default browser in the first run experience.">
           Use Chromium anytime you click links in messages, documents, and other apps
         </message>
+        <message name="IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE" desc="Subtitle for the page that prompts user to set Chromium as their default browser and pin to taskbar in the first run experience.">
+          Open links in Chromium from any app. Plus for easy access, it gets pinned to your taskbar.
+        </message>
         <message name="IDS_FRE_DEFAULT_BROWSER_ILLUSTRATION_ALT_TEXT" desc="Alt text for the illustration in the page that prompts user to set Chromium as their default browser.">
           Chromium logo inside a computer screen.
         </message>
diff --git a/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1 b/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1
new file mode 100644
index 0000000..b15075a
--- /dev/null
+++ b/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+64015d0334a60ec15ebc4bb6218edb80b93860fa
\ No newline at end of file
diff --git a/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1 b/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1
new file mode 100644
index 0000000..b15075a
--- /dev/null
+++ b/chrome/app/chromium_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1
@@ -0,0 +1 @@
+64015d0334a60ec15ebc4bb6218edb80b93860fa
\ No newline at end of file
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp
index d0df64b9..7da108b9 100644
--- a/chrome/app/extensions_strings.grdp
+++ b/chrome/app/extensions_strings.grdp
@@ -716,4 +716,28 @@
     The only way to undo this is to re-install <ph name="IDS_SHORT_PRODUCT_OS_NAME">$1<ex>ChromeOS</ex></ph>
   </message>
 </if>
+<if expr="enable_extensions">
+  <!-- Extensions Zero State Promo IPH -->
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_HEADER" desc="Header of the extensions zero state in-product help promo.">
+    Supercharge your browser with extensions and themes
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_CHIPS_IPH_DESCRIPTION" desc="An one line description for the extensions zero state in-product-help promo.">
+    Extensions are add-ons for Chrome that can help you do more
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_SHOPPING_CATEGORY_LABEL" desc="Label for the button that opens the Chrome Web Store shopping category page.">
+    Find coupons
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_WRITING_HELP_COLLECTION_LABEL" desc="Label for the button that opens the Chrome Web Store writing help collection page.">
+    Help me write
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_PRODUCTIVITY_CATEGORY_LABEL" desc="Label for the button that opens the Chrome Web Store producitivty category page.">
+    Boost productivity
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_AI_PRODUCTIVITY_COLLECTION_LABEL" desc="Label for the button that opens the Chrome Web Store ai productivity collection page.">
+    Enhance with AI
+  </message>
+  <message name="IDS_EXTENSIONS_ZERO_STATE_IPH_DISMISS_BUTTON_TITLE" desc="Title attribute for the button that dismisses the extensions zero state in-product-help promo.">
+    Close
+  </message>
+</if>
 </grit-part>
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_CHIPS_IPH_DESCRIPTION.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_CHIPS_IPH_DESCRIPTION.png.sha1
new file mode 100644
index 0000000..d69d32a
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_CHIPS_IPH_DESCRIPTION.png.sha1
@@ -0,0 +1 @@
+4818ce9e6fa13c519cad16e17c4d55a896aa4b44
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_AI_PRODUCTIVITY_COLLECTION_LABEL.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_AI_PRODUCTIVITY_COLLECTION_LABEL.png.sha1
new file mode 100644
index 0000000..34a4bc72
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_AI_PRODUCTIVITY_COLLECTION_LABEL.png.sha1
@@ -0,0 +1 @@
+62c3bceece6198451d57a27591a3fccf16f9b81f
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_DISMISS_BUTTON_TITLE.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_DISMISS_BUTTON_TITLE.png.sha1
new file mode 100644
index 0000000..80105c4
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_DISMISS_BUTTON_TITLE.png.sha1
@@ -0,0 +1 @@
+94d587287f7fc506b2fda71a65522e74867e299e
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_HEADER.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_HEADER.png.sha1
new file mode 100644
index 0000000..f04d844c
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_HEADER.png.sha1
@@ -0,0 +1 @@
+7516a5052a6d47d5d86835c5cdbb1f39d9419da4
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_PRODUCTIVITY_CATEGORY_LABEL.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_PRODUCTIVITY_CATEGORY_LABEL.png.sha1
new file mode 100644
index 0000000..646cd83
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_PRODUCTIVITY_CATEGORY_LABEL.png.sha1
@@ -0,0 +1 @@
+0ef5ffdea04898b79f8649ccf890341e77c419ad
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_SHOPPING_CATEGORY_LABEL.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_SHOPPING_CATEGORY_LABEL.png.sha1
new file mode 100644
index 0000000..a86980bf
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_SHOPPING_CATEGORY_LABEL.png.sha1
@@ -0,0 +1 @@
+1f3341b7b80ed8db1b89aac113efb0aa23537a37
\ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_WRITING_HELP_COLLECTION_LABEL.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_WRITING_HELP_COLLECTION_LABEL.png.sha1
new file mode 100644
index 0000000..e4cce7cf
--- /dev/null
+++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ZERO_STATE_IPH_WRITING_HELP_COLLECTION_LABEL.png.sha1
@@ -0,0 +1 @@
+5683049157253ab0e3552f79508f636272b54c3c
\ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 3fc773a..2c783b8 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -10239,6 +10239,15 @@
           =1 {To manage it, open Extensions}
           other {To manage them, open Extensions}}
       </message>
+      <message name="IDS_EXTENSIONS_ZERO_STATE_PROMO_IPH_TITLE" desc="Title text shown on the promotional UI appearing when the user has no extensions installed.">
+         Enhance your browser with extensions
+      </message>
+      <message name="IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_DESCRIPTION" desc="Body text shown on the promotional UI appearing when the user has no extensions installed.">
+         Extensions are add-ons to Chrome that can help you stay organized, simplify tasks, and customize your browsing
+      </message>
+      <message name="IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_ACCEPT" desc="Text on the custom action button that opens a new tab to the Chrome Web Store.">
+         Discover extensions
+      </message>
       <message name="IDS_GLOBAL_MEDIA_CONTROLS_PROMO" desc="Text shown on promotional UI appearing next to the global media controls toolbar button.">
         New! Control your music, videos, and more.
       </message>
diff --git a/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_ACCEPT.png.sha1 b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_ACCEPT.png.sha1
new file mode 100644
index 0000000..67328d9d
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_ACCEPT.png.sha1
@@ -0,0 +1 @@
+80f158eecd8799a67e39d3fc91d5bd7fca46c6b4
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_DESCRIPTION.png.sha1 b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_DESCRIPTION.png.sha1
new file mode 100644
index 0000000..4c1ee4fa
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_DESCRIPTION.png.sha1
@@ -0,0 +1 @@
+c073f3c03f140ac45cd37b0adb76d6f746ac668a
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_IPH_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_IPH_TITLE.png.sha1
new file mode 100644
index 0000000..cd27ce4
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_ZERO_STATE_PROMO_IPH_TITLE.png.sha1
@@ -0,0 +1 @@
+4489e7f60714d6a660f938a450604056699faa49
\ No newline at end of file
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd
index 5eab363..9fda1292 100644
--- a/chrome/app/google_chrome_strings.grd
+++ b/chrome/app/google_chrome_strings.grd
@@ -2193,9 +2193,15 @@
         <message name="IDS_FRE_DEFAULT_BROWSER_TITLE" desc="Title for the page that prompts user to set Chrome as their default browser in the first run experience.">
           Set Chrome as your default browser
         </message>
+        <message name="IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE" desc="Title for the page that prompts user to set Chromium as their default browser and pin to taskbar in the first run experience.">
+          Use Chrome by default and get it pinned
+        </message>
         <message name="IDS_FRE_DEFAULT_BROWSER_SUBTITLE_NEW" desc="Subtitle for the page that prompts user to set Chrome as their default browser in the first run experience.">
           Use Chrome anytime you click links in messages, documents, and other apps
         </message>
+        <message name="IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE" desc="Subtitle for the page that prompts user to set Chrome as their default browser in the first run experience.">
+          Open links in Chrome from any app. Plus for easy access, it gets pinned to your taskbar.
+        </message>
         <message name="IDS_FRE_DEFAULT_BROWSER_ILLUSTRATION_ALT_TEXT" desc="Alt text for the illustration in the page that prompts user to set Chrome as their default browser.">
           Chrome logo inside a computer screen.
         </message>
diff --git a/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1 b/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1
new file mode 100644
index 0000000..1081651
--- /dev/null
+++ b/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+aceaf41eadd0fdb841395af496c0a72c6975acf4
\ No newline at end of file
diff --git a/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1 b/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1
new file mode 100644
index 0000000..1081651
--- /dev/null
+++ b/chrome/app/google_chrome_strings_grd/IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE.png.sha1
@@ -0,0 +1 @@
+aceaf41eadd0fdb841395af496c0a72c6975acf4
\ No newline at end of file
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index c64ff4c..6dfe27d5 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -728,260 +728,6 @@
     </message>
   </if>
 
-  <if expr="use_nss_certs">
-    <!-- Certificate Manager Page -->
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES" desc="Label for the your certificates tab in certificate manager.">
-      Your certificates
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_EXPAND_ACCESSIBILITY_LABEL" desc="Label for the button that toggles showing the certificates that are installed for a particular organization. Only visible by screen reader software.">
-      Show certificates for organization
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES_DESCRIPTION" desc="Label for your certificates subtitle tab in certificate manager.">
-      You have certificates from these organizations that identify you
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS" desc="Label for the servers tab in certificate manager.">
-      Servers
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS_DESCRIPTION" desc="Label for servers subtitle tab in certificate manager.">
-      You have certificates on file that identify these servers
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_NO_CERTIFICATES" desc="Message displayed by the certificate manager, indicating that there are no certificates for a given certificate category.">
-      You have no certificates in this category
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES" desc="Label for the authorities tab in certificate manager.">
-      Authorities
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES_DESCRIPTION" desc="Label for authorities subtitle tab in certificate manager.">
-      You have certificates on file that identify these certificate authorities
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_VIEW" desc="Label for view button in certificate manager.">
-      View
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT" desc="Label for import button in certificate manager.">
-      Import
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_AND_BIND" desc="Label for import and bind button in certificate manager.">
-      Import and Bind
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_EXPORT" desc="Label for export button in certificate manager.">
-      Export
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS" desc="Label for the others tab in certificate manager.">
-      Others
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS_DESCRIPTION" desc="Label for others subtitle tab in certificate manager.">
-      You have certificates on file that do not fit in any of the other categories
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_USAGE_SSL_CLIENT" desc="The description of a certificate that is verified for use as an SSL client">
-      SSL Client Certificate
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_UNTRUSTED" desc="This text is displayed next to untrusted certificates in a red box.">
-      Untrusted
-    </message>
-
-    <!-- Certificate Manager Page, edit certificate authority trust dialog-->
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_TITLE" desc="Title of the certificate manager edit trust dialog">
-      Certificate authority
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_DESCRIPTION" desc="Line displayed in certificate manager edit trust dialog before the checkboxes for editing certificate trust flags">
-      Trust settings
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_EXPLANATION" desc="Description in dialog for editing Certification Authority trust flags">
-      The certificate "<ph name="CERTIFICATE_NAME">$1<ex>Verisign Class 1 Public Primary Certification Authority</ex></ph>" represents a Certification Authority
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_SSL" desc="Description in Certification Authority trust dialog for the SSL trust checkbox.">
-      Trust this certificate for identifying websites
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_EMAIL" desc="Description in Certification Authority trust dialog for the Email trust checkbox.">
-      Trust this certificate for identifying email users
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_OBJ_SIGN" desc="Description in Certification Authority trust dialog for the Code Signing trust checkbox.">
-      Trust this certificate for identifying software makers
-    </message>
-
-    <!-- Certificate Manager Page, delete certificate confirmation dialog -->
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_USER_TITLE" desc="Title of a certificate manager dialog for confirming deletion of a user certificate">
-      Delete "<ph name="CERTIFICATE_NAME">$1<ex>VeriSign Browser Certificate</ex></ph>"?
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_USER_DESCRIPTION" desc="Description of impact of deleting a user certificate">
-      If you delete one of your own certificates, you can no longer use it to identify yourself.
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_SERVER_TITLE" desc="Title of a certificate manager dialog for confirming deletion of a server certificate">
-      Delete server certificate "<ph name="CERTIFICATE_NAME">$1<ex>www.example.com</ex></ph>"?
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_SERVER_DESCRIPTION" desc="Description of impact of deleting a user certificate">
-      If you delete a server certificate, you restore the usual security checks for that server and require it uses a valid certificate.
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CA_TITLE" desc="Title of a certificate manager dialog for confirming deletion of a certification authority certificate">
-      Delete CA certificate "<ph name="CERTIFICATE_NAME">$1<ex>Verisign Class 1 Public Primary Certification Authority</ex></ph>"?
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CA_DESCRIPTION" desc="Description of impact of deleting a user certificate">
-      If you delete a Certification Authority (CA) certificate, your browser will no longer trust any certificates issued by that CA.
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_OTHER_TITLE" desc="Title of a certificate manager dialog for confirming deletion of a certificate of other type">
-      Delete certificate "<ph name="CERTIFICATE_NAME">$1<ex>Example Certificate</ex></ph>"?
-    </message>
-
-    <!-- Certificate Manager Page, encrypt/decrypt password dialogs -->
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_ENCRYPT_PASSWORD_TITLE" desc="Description of password prompt in certificate manager for exporting a personal certificate">
-      Please enter a password to encrypt this certificate
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DECRYPT_PASSWORD_TITLE" desc="Description of password prompt in certificate manager for restoring a personal certificate">
-      Enter your certificate password
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_ENCRYPT_PASSWORD_DESCRIPTION" desc="Text in password prompt of certificate manager for exporting a personal certificate, reminding user that if they forget the password they're screwed.">
-      The password you choose will be required to restore this certificate later. Please record it in a safe location.
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PASSWORD" desc="The label of the password field in the certificate manager for restoring or exporting a personal certificate">
-      Password
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CONFIRM_PASSWORD" desc="The label of the field in the certificate manager for re-entering the password when exporting a certificate">
-      Confirm password
-    </message>
-
-    <!-- Certificate Manager Page, error dialog -->
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_BAD_PASSWORD" desc="The text in the error dialog for entering an incorrect password when importing an encrypted certificate file.">
-      Incorrect password
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE" desc="The title in the error dialog for Certification Authority file import errors.">
-      Certification Authority Import Error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_CERT_PARSE_ERROR" desc="The message in the certificate manager error dialog for importing invalid certificate files.">
-      Unable to parse file
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CERT_ERROR_TITLE" desc="The title in the error dialog for certificate delete errors.">
-      Certificate Deletion Error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_CERT_ALREADY_EXISTS" desc="The error message when trying to import certificate which already exists.">
-      Certificate already exists
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_NOT_CA" desc="The error message when trying to import certificate authorities and a certificate is not a certification authority">
-      Not a Certification Authority
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ALL_NOT_IMPORTED" desc="The header in certificate manager error dialog for list of certificates that could not be imported, when none were successfully imported.">
-      The file contained multiple certificates, none of which were imported:
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_TITLE" desc="The title in the error dialog for certificate file import errors.">
-      Certificate Import Error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_FILE" desc="The message in the error dialog for corrupt certificate files.">
-      Invalid or corrupt file
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_MAC" desc="The message in the error dialog for certificate files with invalid MAC.">
-      Incorrect password or corrupt file
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_MISSING_KEY" desc="The message in the error dialog for certificates without a local private key.">
-      The Private Key for this Client Certificate is missing or invalid
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_SINGLE_NOT_IMPORTED" desc="The header in certificate manager error dialog for single certificates that could not be imported.">
-      The file contained one certificate, which was not imported:
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_SOME_NOT_IMPORTED" desc="The header in certificate manager error dialog for list of certificates that could not be imported, even though others were.">
-      The file contained multiple certificates, some of which were not imported:
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_UNSUPPORTED" desc="The message in the error dialog for unsupported certificate files.">
-      File uses unsupported features
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_EXPORT_ERROR_TITLE" desc="The title in the error dialog for PKCS #12 file export errors.">
-      PKCS #12 Export Error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_FILES" desc="The label in the file selector dialog for PKCS #12 file type.">
-      PKCS #12 Files
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_READ_ERROR_FORMAT" desc="The text in the error dialog for certificate file read errors.">
-      There was an error while trying to read the file: <ph name="ERROR_TEXT">$1<ex>File not found.</ex></ph>.
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_FORMAT" desc="The format of per-certificate error messages in import failure dialog">
-      <ph name="CERTIFICATE_NAME">$1<ex>www.example.com</ex></ph>: <ph name="ERROR">$2<ex>Not a Certification Authority</ex></ph>
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE" desc="The title in the error dialog for Certification Authority file import errors.">
-      Server Certificate Import Error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SET_TRUST_ERROR_TITLE" desc="The title in the error dialog for certificate trust editing errors.">
-      Error Setting Certificate Trust
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_NOT_ALLOWED" desc="The text in the error dialog for policy restriction errors.">
-      Action is disabled by your administrator
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR" desc="The text in the error dialog when an unknown error occurs during an operation on the certificate database.">
-      Unknown error
-    </message>
-    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_WRITE_ERROR_FORMAT" desc="The text in the error dialog for PKCS #12 file write errors.">
-      There was an error while trying to write the file: <ph name="ERROR_TEXT">$1<ex>Permission denied.</ex></ph>.
-    </message>
-    <if expr="is_chromeos">
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER" desc="Header that lists the certificate provisioning processes.">
-        Certificates are being provisioned for these certificate profiles
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH" desc="Text on the button to refresh the status of a certificate provisioning process.">
-        Refresh
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET" desc="Text on the button to reset a certificate provisioning process.">
-        Reset
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS" desc="Text on the button to show debug details about a certificate provisioning process and title of the dialog that shows the details.">
-        Details
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED" desc="Text on the button to show advanced entries on the certificate provisioning details dialog.">
-        Advanced
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR" desc="Status description of a certificate provisioning process when the client is preparing the Certificate signing request (CSR) ">
-        Preparing certificate signing request
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PREPARING_CSR_WAITING" desc="Status description of a certificate provisioning process when the client is waiting for the server to aid in preparation of the Certificate signing request (CSR)">
-        Preparing certificate signing request (waiting on server)
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_WAITING_FOR_CA" desc="Status description of a certificate provisioning process when the client is waiting for a certificate to be issued">
-        Waiting for the CA to issue a certificate
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_SUCCESS" desc="Status description of a certificate provisioning process that has succeeded">
-        Success
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_FAILURE" desc="Status description of a certificate provisioning process that has failed">
-        Failure
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_CANCELED" desc="Status description of a certificate provisioning process that has been canceled">
-        Canceled
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_READY_FOR_NEXT_OPERATION" desc="Status description of a certificate provisioning process that is waiting for the next operation">
-        Waiting for the next operation
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_AUTHORIZE_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Authorize instruction">
-        <ph name="AUTHORIZE_INSTRUCTION_NAME">"Authorize"</ph> instruction received
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_PROOF_OF_POSSESSION_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Sign Data instruction">
-        <ph name="PROOF_OF_POSSESSION_INSTRUCTION_NAME">"Proof of Possession"</ph> instruction received
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_IMPORT_CERTIFICATE_INSTRUCTION_RECEIVED" desc="Status description of a certificate provisioning process that has received a Import Certificate instruction">
-        <ph name="IMPORT_CERTIFICATE__INSTRUCTION_NAME">"Import Certificate"</ph> instruction received
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID" desc="Label of the field that displays the id of a certificate provisioning process">
-        Process ID
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME" desc="Label of the field that displays the human-readable client certificate profile name of a certificate provisioning process">
-        Certificate Profile Name
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID" desc="Label of the field that displays the internal ID of the client certificate profile of a certificate provisioning process">
-        Certificate Profile ID
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS" desc="Label of the field that displays certificate provisioning status">
-        Status
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID" desc="Label of the field that displays certificate provisioning status id, which is a number (e.g. 6)">
-        Status Id
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE" desc="Label of the field that displays when a certificate provisioning process had the last update">
-        Last Update
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS" desc="Label of the field that is displayed when a certificate provisioning process last update was unsuccessful">
-        Last Unsuccessful Update
-      </message>
-      <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DMSERVER_ERROR_MESSAGE" desc="Status description of a certificate provisioning process that has failed while contacting the DMServer">
-        Connection to Device Management Server failed with status '<ph name="STATUS_TEXT">$1<ex>Temporary server error</ex></ph>' at <ph name="FAILURE_TIME">$2<ex>Mon, 14 Mar 2022 17:35:00 GMT</ex></ph>
-      </message>
-    </if>
-  </if>
-
   <!-- Delete Browsing Data -->
   <message name="IDS_SETTINGS_CLEAR_PERIOD_TITLE" desc="Label of the dropdown that selects the time range for which browsing data will be deleted.">
     Time range
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 62d8b77..f6710eb 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2608,6 +2608,7 @@
     deps += [
       "//chrome/browser/win/installer_downloader:controller",
       "//chrome/browser/win/installer_downloader:infobar",
+      "//chrome/browser/win/installer_downloader:infobar_impl",
     ]
   }
 
@@ -7708,6 +7709,7 @@
       "//chrome/browser/controlled_frame",
       "//chrome/browser/extensions",
       "//chrome/browser/ui/tabs:tab_strip_model_observer",
+      "//chrome/browser/ui/webui/extensions_zero_state_promo:mojo_bindings",
       "//ui/base/mojom:ui_base_types",
     ]
 
@@ -8289,8 +8291,6 @@
 
   if (use_nss_certs) {
     sources += [
-      "certificate_manager_model.cc",
-      "certificate_manager_model.h",
       "net/nss_service.cc",
       "net/nss_service.h",
       "net/nss_service_factory.cc",
@@ -8746,8 +8746,10 @@
     ]
   }
   if (is_win || is_mac || is_linux || is_chromeos) {
-    public_deps +=
-        [ "//chrome/browser/ui/webui/connectors_internals:mojo_bindings" ]
+    public_deps += [
+      "//chrome/browser/ui/webui/connectors_internals:mojo_bindings",
+      "//ui/webui/resources/cr_components/help_bubble:mojo_bindings",
+    ]
   }
   if (safe_browsing_mode == 1) {
     public_deps += [ "//chrome/browser/ui/webui/reset_password:mojo_bindings" ]
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index b6111b43..30946bfa 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -668,10 +668,4 @@
   "shared_storage_browsertest.cc": [
     "+components/services/storage/shared_storage/shared_storage_manager.h",
   ],
-  "certificate_manager_model.cc": [
-    "+chromeos/ash/components/kcer",
-  ],
-  "certificate_manager_model_unittest.cc": [
-    "+chromeos/ash/components/kcer/extra_instances.h",
-  ],
 }
diff --git a/chrome/browser/OWNERS b/chrome/browser/OWNERS
index d0d86445..bc623e74 100644
--- a/chrome/browser/OWNERS
+++ b/chrome/browser/OWNERS
@@ -29,8 +29,6 @@
 
 per-file browser_navigator_browsertest.*=file://content/OWNERS
 
-per-file certificate_manager_model*=mattm@chromium.org
-
 per-file chrome_content_browser_client.cc=*
 per-file chrome_content_browser_client.h=*
 per-file chrome_content_browser_client_browsertest.cc=*
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 7391339..745c2f5f 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -12526,6 +12526,15 @@
      FEATURE_VALUE_TYPE(omnibox::kEnableSiteSearchAllowUserOverridePolicy)},
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ||
         // BUILDFLAG(IS_CHROME_OS)
+    // TODO(crbug.com/40680264): Remove this flag after regression investigation
+    // is finished.
+    {
+        "new-content-for-checkerboarded-scrolls",
+        flag_descriptions::kNewContentForCheckerboardedScrollsName,
+        flag_descriptions::kNewContentForCheckerboardedScrollsDescription,
+        kOsAll,
+        FEATURE_VALUE_TYPE(features::kNewContentForCheckerboardedScrolls),
+    },
 
     {"autofill-enable-multiple-request-in-virtual-card-downstream-enrollment",
      flag_descriptions::
diff --git a/chrome/browser/apps/app_service/publishers/chrome_app_deprecation.cc b/chrome/browser/apps/app_service/publishers/chrome_app_deprecation.cc
index aa70cf75..d536126 100644
--- a/chrome/browser/apps/app_service/publishers/chrome_app_deprecation.cc
+++ b/chrome/browser/apps/app_service/publishers/chrome_app_deprecation.cc
@@ -60,104 +60,104 @@
      "geopjmggmojbcnjlkcnfbgdniomaioif", "gfajignjkjbleogeegcgjimnkooihmdm",
      "ggaabodlngcnbdcpkfacegoacchkalmn", "ggddmkhlbkollcjopbnkbbhnikncfena",
      "gjenjmcioeobmpllaeopaoibabhgcohi", "glcdffonolecglhbodpaeijkhgdfkbon",
-     "gnddkmpjjjcimefninepfmmddpgaaado", "gnogkjfeajjnafijfmffnkgenhnkdnfp",
-     "gpgnoonhefbmngkiafpedbligiiekfcp", "haiffjcadagjlijoggckpgfnoeiflnem",
-     "hanegekdenjamflmdgcbjlobfkijeblp", "hclmbafbgpncekjmadbbcpekilflmkfg",
-     "hgdemhjioannjiccnfgmllghllhpncpm", "hginjgofkfbdfpkjcchdklbkkdbigpna",
-     "hhcgnlnhaapiekdelngjichnccjfkbnc", "hkmlofdlheebfpgfcmgbdjddnoniccno",
-     "hmpdelcfcndndcoldocpdmakeabbihgb", "hnlanngibjpmdolooednhkedmfbdbmhc",
-     "hpdnjcbgolagabfgcgjpicbknmgefakl", "hplnogolijklhfbbfogccgickedplpeo",
-     "iedihkacboebiliakaicmedjmajmjiep", "ighapdcohmkppihdjdejlbkolhbgnlfm",
-     "ihlmfpkjommgamcgofmdmojpeolimlfe", "iiaffmacblgjekhogmghdjfflchkjmmg",
-     "iilndnicahkogiklibnnibmmeikacnfo", "iinmojhiolplpndeijdkfoghkokbfadb",
-     "iiopclfeneoimifgocjnhcjpjgaojhho", "ijdoledcajbpfbkiafmmimjhmkmdppjo",
-     "ikgemedabaijdochaempgdpfebllgfcc", "iknkgipmikbpldmppngljbedofgmanfm",
-     "inaonhfifmcnldmdnlbnfpikjndebkbj", "jfhndkehlkceadabhedbcclclbclhnbh",
-     "jgafcpolgeedpieaadaeeaoanackiina", "jglaiblkoeelgfdabnhpcpdnodjonclf",
-     "jjkgijommndbjlekbalbbiiidnigcgfl", "jjlhmikmcgmheddmlfeckndcedkmcpng",
-     "jjnejapcbafplbdkbombhmmjnafplkon", "jjoncgfekjbknjfejfonaochdpdedbka",
-     "jnnkgopblccifpnkfpfkmdafjebjlhcc", "jnojnnofimbdpeihiddafgagckdlnlpe",
-     "jpmngkkdajjfkdknhbifjbglkckbklee", "kahkblckpdgogkogmfhfnldpjhdpfiia",
-     "kdbdkbbfhghbggpjmpapmobihghkdmkh", "kdndmepchimlohdcdkokdddpbnniijoa",
-     "kenkpdjcfppbccchillfdjkjnejjgand", "kflikliicodcopdhibchdfaninnhbalf",
-     "kfllildicglifipmhpnlmpfbkdponghk", "khpfeaanjngmcnplbdlpegiifgpfgdco",
-     "khplkoflcklpnlofodhlnjeiodbmejoe", "kjceddihhogmglodncbmpembbclhnpda",
-     "kljahdaehfmgddhnibkikcjfppjcjjcn", "kmfbmibhlikajdfjbddlolmdkkbiephg",
-     "lbfgjakkeeccemhonnolnmglmfmccaag", "lemoeliioheohdcoogohonkamhloahbb",
-     "likeoemlchnioaoaklldmcnilhhpjamo", "lknebpkncfibkhjkimejlgppnjgemobn",
-     "lmhpnmjggoibofacnookchiemlihmjdd", "lnnghenlbgaeloipgjlafjhlccipbpnm",
-     "maegcedffmoidlccpjahiglkaacbncnn", "mclaaifjbcglkbdhdkaamamplpjoabih",
-     "mdmkkicfmmkgmpkmkdikhlbggogpicma", "medpmkohocjidlghgmnnkpfigfpddaok",
-     "mhbelemjphdecdagmmengimkkiefmcej", "mhfhafklkbgalhbdihiccegaldefdigp",
-     "mhjpnpdhahbahbjedoihlganncneknfo", "millmignkmpaolllendlllaibmeehohd",
-     "mkjgggeeejocddadcegdhcchhmemokcn", "mndakpenoffnhdmpcpnajekhpbonggeo",
-     "mpjaajdhcmmkeikfdgffdpdjncdnmhmk", "ncjnakhgkcldedboafigaailhldnellf",
-     "ndlolfeihajiaklmehdnajjoblphkppd", "nenolmmehjhaggnamcglapjjdofcojao",
-     "nghoaommfphpdlipedlebgcnmphedhdb", "ngiaihbicdcdflfkhilnaaeobnchggkk",
-     "nhebofpemjfflnkmaneaopjickpliokk", "njofdhegeeccijokfiijflbfajgjclch",
-     "oanbapfpojpdpjppgcmdhcjehacnccbm", "ocnncjgbkiomppnchhbmmcpblifejpco",
-     "odcalbcbcmnepllckjhdndgmolpnddjo", "oefoedhdllfdpfpjhhccdiglflemnfdb",
-     "oflckobdemeldmjddmlbaiaookhhcngo", "ofmlpkdeaopippomdfamngkpnbagkdem",
-     "ogmfbebknnapidhhefcdgmoafjeblnjo", "okaiidkcbkpimeiebofglgpobdafmmeb",
-     "ondpjadajoodngapikdebdcnjcjkeecc", "opalidednimmhdfbcpdmoihhpkahgkak",
-     "pdgbdkbnajhamggjjlhlapedeolflpgm", "pdpgalakpabfiiadeiimoolhemoleaeg",
-     "pgolnnkmmlpbnhfcfbephcnkooejbcep", "pifpopligmljinioeacaccciabhbbpjo",
-     "plhmjahmpikllpphfaoopdhnkbpffccm", "pnclfbefcgmenbbbpljbhbdacgkgkjlh",
-     "ppkfnjlimknmjoaemnpidmdlfchhehel"});
+     "gnddkmpjjjcimefninepfmmddpgaaado", "gngadipbljmmcgcjjflidckpbgebnhod",
+     "gnogkjfeajjnafijfmffnkgenhnkdnfp", "gpgnoonhefbmngkiafpedbligiiekfcp",
+     "haiffjcadagjlijoggckpgfnoeiflnem", "hanegekdenjamflmdgcbjlobfkijeblp",
+     "hclmbafbgpncekjmadbbcpekilflmkfg", "hgdemhjioannjiccnfgmllghllhpncpm",
+     "hginjgofkfbdfpkjcchdklbkkdbigpna", "hhcgnlnhaapiekdelngjichnccjfkbnc",
+     "hkmlofdlheebfpgfcmgbdjddnoniccno", "hmpdelcfcndndcoldocpdmakeabbihgb",
+     "hnlanngibjpmdolooednhkedmfbdbmhc", "hpdnjcbgolagabfgcgjpicbknmgefakl",
+     "hplnogolijklhfbbfogccgickedplpeo", "iedihkacboebiliakaicmedjmajmjiep",
+     "ighapdcohmkppihdjdejlbkolhbgnlfm", "ihlmfpkjommgamcgofmdmojpeolimlfe",
+     "iiaffmacblgjekhogmghdjfflchkjmmg", "iilndnicahkogiklibnnibmmeikacnfo",
+     "iinmojhiolplpndeijdkfoghkokbfadb", "iiopclfeneoimifgocjnhcjpjgaojhho",
+     "ijdoledcajbpfbkiafmmimjhmkmdppjo", "ikgemedabaijdochaempgdpfebllgfcc",
+     "iknkgipmikbpldmppngljbedofgmanfm", "inaonhfifmcnldmdnlbnfpikjndebkbj",
+     "jfhndkehlkceadabhedbcclclbclhnbh", "jgafcpolgeedpieaadaeeaoanackiina",
+     "jglaiblkoeelgfdabnhpcpdnodjonclf", "jjkgijommndbjlekbalbbiiidnigcgfl",
+     "jjlhmikmcgmheddmlfeckndcedkmcpng", "jjnejapcbafplbdkbombhmmjnafplkon",
+     "jjoncgfekjbknjfejfonaochdpdedbka", "jnnkgopblccifpnkfpfkmdafjebjlhcc",
+     "jnojnnofimbdpeihiddafgagckdlnlpe", "jpmngkkdajjfkdknhbifjbglkckbklee",
+     "kahkblckpdgogkogmfhfnldpjhdpfiia", "kdbdkbbfhghbggpjmpapmobihghkdmkh",
+     "kdndmepchimlohdcdkokdddpbnniijoa", "kenkpdjcfppbccchillfdjkjnejjgand",
+     "kflikliicodcopdhibchdfaninnhbalf", "kfllildicglifipmhpnlmpfbkdponghk",
+     "khpfeaanjngmcnplbdlpegiifgpfgdco", "khplkoflcklpnlofodhlnjeiodbmejoe",
+     "kjceddihhogmglodncbmpembbclhnpda", "kljahdaehfmgddhnibkikcjfppjcjjcn",
+     "kmfbmibhlikajdfjbddlolmdkkbiephg", "lbfgjakkeeccemhonnolnmglmfmccaag",
+     "lemoeliioheohdcoogohonkamhloahbb", "likeoemlchnioaoaklldmcnilhhpjamo",
+     "lknebpkncfibkhjkimejlgppnjgemobn", "lmhpnmjggoibofacnookchiemlihmjdd",
+     "lnnghenlbgaeloipgjlafjhlccipbpnm", "maegcedffmoidlccpjahiglkaacbncnn",
+     "mclaaifjbcglkbdhdkaamamplpjoabih", "mdmkkicfmmkgmpkmkdikhlbggogpicma",
+     "medpmkohocjidlghgmnnkpfigfpddaok", "mhbelemjphdecdagmmengimkkiefmcej",
+     "mhfhafklkbgalhbdihiccegaldefdigp", "mhjpnpdhahbahbjedoihlganncneknfo",
+     "millmignkmpaolllendlllaibmeehohd", "mkjgggeeejocddadcegdhcchhmemokcn",
+     "mndakpenoffnhdmpcpnajekhpbonggeo", "mpjaajdhcmmkeikfdgffdpdjncdnmhmk",
+     "ncjnakhgkcldedboafigaailhldnellf", "ndlolfeihajiaklmehdnajjoblphkppd",
+     "nenolmmehjhaggnamcglapjjdofcojao", "nghoaommfphpdlipedlebgcnmphedhdb",
+     "ngiaihbicdcdflfkhilnaaeobnchggkk", "nhebofpemjfflnkmaneaopjickpliokk",
+     "njofdhegeeccijokfiijflbfajgjclch", "oanbapfpojpdpjppgcmdhcjehacnccbm",
+     "ocnncjgbkiomppnchhbmmcpblifejpco", "odcalbcbcmnepllckjhdndgmolpnddjo",
+     "oefoedhdllfdpfpjhhccdiglflemnfdb", "oflckobdemeldmjddmlbaiaookhhcngo",
+     "ofmlpkdeaopippomdfamngkpnbagkdem", "ogmfbebknnapidhhefcdgmoafjeblnjo",
+     "okaiidkcbkpimeiebofglgpobdafmmeb", "ondpjadajoodngapikdebdcnjcjkeecc",
+     "opalidednimmhdfbcpdmoihhpkahgkak", "pdgbdkbnajhamggjjlhlapedeolflpgm",
+     "pdpgalakpabfiiadeiimoolhemoleaeg", "pgolnnkmmlpbnhfcfbephcnkooejbcep",
+     "pifpopligmljinioeacaccciabhbbpjo", "plhmjahmpikllpphfaoopdhnkbpffccm",
+     "pnclfbefcgmenbbbpljbhbdacgkgkjlh", "ppkfnjlimknmjoaemnpidmdlfchhehel"});
 
 constexpr auto kUserInstalledAllowlist = base::flat_set<std::string_view>();
 
-constexpr auto kKioskSessionAllowlist =
-    base::MakeFixedFlatSet<std::string_view>(
-        {"adbijfidmjidmkkpiglnfkflcoblkfmn", "adpfhflbokfdhnfakijgjkpkjegncbpl",
-         "agkggapglfgffelalcfgbjmhkaljnbmn", "alhlkpgheiefedomljbenmkpconkffhk",
-         "amdpebpoiccejfcnocgebkidfmkcdfei", "aoebmljacknghkklaholjkflllbghhnj",
-         "bgldcjbajnkfkephalfogfgklkgjnjeo", "bhcnmihmgdljpnnoobnbdmdjhmfgcpio",
-         "bloholppicibpgbagaebcaagiikicjbn", "cafpcfibibiomlehdnmabchhekeifbgb",
-         "cdomppfkcljjopjijjdchhjfioljaeph", "cgihdamofndnjjlglmcaabdafhmoconf",
-         "ckmkndfplnldgohnnkhmeokbmedpdbjl", "clbgknjcblogheibmcbbdlpkollmgofh",
-         "cmhiajbopgbagidplpiaclnpglmhbhka", "cpbpbhkfonocjjamhjeabdihibkoajlc",
-         "dakemaookmhkdfgcgebakflmhgdhille", "dakmgckkclepfbfeldlgenikiobflcne",
-         "ddhhodggehedggajomidnmgchfnbeold", "dfjigmapgofdlgieniibjdcddlaafick",
-         "dinalfjmfmjkdnkgbbjncgchmghijpgl", "ealpglkmnpenllgjjgdojoemohidefdm",
-         "edhlcbaemfhpoblalbdgeegmaddjdcae", "edpaojhfdnnebhmmhdlpnpomoaopfjod",
-         "efdahhfldoeikfglgolhibmdidbnpneo", "emlbcjpcbepfnhpkiidenlnfdjbghmpg",
-         "fammfnbkkollpklfkachppebochgakjg", "fcichhfeoaikaoldkncmggipmpcbgffg",
-         "fdlpibjfnlhnmeckjjhfiejfdghkmkdm", "gbecpjnejcnafnkgfciepngjcndodann",
-         "gbgncgdjjnelalecmmkimnlgfpmbihog", "gcefeoeohcoeoofmehgjfipjiepodlhg",
-         "gdehbmmmjkddbonbmknngoigkleicpec", "genfdmkliekafjhadcpnhefgicceohhd",
-         "gmdgbdlpbnhiogedlhmdiceocbgcbpgi", "gobhocmdcdpfebockbogdfhnebgmemnf",
-         "hadonmdpeimgfpmmmeldbmjiknnbfdhk", "hbcogfhdhehbfnedbbboiiddpkkjjnio",
-         "hbfbekdejbpmnpilhdnfokjehnianfeb", "hblfbmjdaalalhifaajnnodlkiloengc",
-         "hchdcamjekgapahefjapegmaapggeafe", "hebfpdlglfmneladiogocbflmbjneeoh",
-         "hgkaljnpgngpcgnaonmbdgaolefknaaj", "hhbmmipodfklmbmiaegcbmbfmmfbngnf",
-         "hjbkdjhfdcinjcljfbealemkioalnfao", "ibboejlnnenbhpjfpgoglholgpdjjeff",
-         "icfpencnfmadodjpbbdipkkkljmamine", "iflkfmkmpafjfdkkokpkjpjmiogkdjjl",
-         "igknghlgndjihblholjbbhjbcfilkilb", "ilehifjdadbblbcnciiggmcbmobkikcb",
-         "jamdkebjilnlfjndffcnekbipcfkhmem", "jcgamccimilnfjpbkbadommjcaplmfod",
-         "jefdfinffojbalcgpkigjjijghmllgil", "jiecdjmgkgmgmbonhifblhfaaecnomcj",
-         "jifdnnnegbhoagepoobbmajnpkmcbjig", "jjlmjgfhdijljijikefhmgmhbchnkmnm",
-         "jmiabaaccndlngedakcjbpbgokhgcpfd", "jnlegeoomaehdodfmpmlflpjapebjjjl",
-         "jnlhnplbndpohngdfjhmdinlpofclhdp", "kacodfanpfkedlelnagnbgfbaabjfddn",
-         "kbkcdgjhbdlplagmlcpafgamnapneoba", "kcdfcljkllboedjeoaicmmabopnnaoaa",
-         "kdffphekpginklcnoefcelkjclbjnbmi", "kedeaijhpgoggdafoabafeldkoolemig",
-         "kgoklcfigmpofpbkdglgbhfgpjdjgppl", "kjbdapadhmcgplddmcggjkhacdnpjmod",
-         "kpjcmnnhdgonbhjnfhebgapnkicknmpp", "lfemdemifjedlccfbhpocnicmjlcgmce",
-         "lgpjgoglfmjggeggfelogaboagbcaklg", "lmdoekjmofbfghllkonahbfdcckmgjlf",
-         "lnokaenamkoojjbhehhpggplknlbejmi", "mbkamiddebohpehiafofidepfffpffln",
-         "mfejnceblfpkdodajfohmjimcbipnhhh", "mfgkakkfpnhfmnipnbehiglkjijancnk",
-         "mhboapffkffmmcggindghkakhdhmjcje", "mhdohnfjdghnpjmhnlodibcnjlaeinap",
-         "mkgbgfehlfaioaejpaedngdohcpdpbpd", "nanoidlkencgghkphophigbmnohnbbcb",
-         "nclhjadnjgfjocbnfmlcfnagnieialof", "nddaogoljagaikdogplnajkdggkfmgei",
-         "ngpbnegpinocjhpnppjeppllflpgafkk", "nhlaojpmboioihghmmdbhgcbjgmcicdk",
-         "nickmpjdfebcopckkfjmflblnmijbiom", "nloplhgjobaomjdppnbcdjfgbefifbdo",
-         "obgbgecgadcagmhnanalmklenjajimld", "oblnbnkmblikfegpcngkcbppphcenhjj",
-         "ocljbfllcpgnlnnaommbmaphaagjmkmj", "odjaaghiehpobimgdjjfofmablbaleem",
-         "ofaokfiblaffkgcapcilcehdhlidehcd", "olaaocfpicpjiocmoklnbfpdlbglbadp",
-         "omkghcboodpimaoimdkmigofhjcpmpeb", "omlplbdgdcpaaknjnkodikcklbkhefoh",
-         "oopdabjckchhklpldcdjllmedcdnbdio", "pjdhfcpflabeafmgdpgdfdejbhkdcgja",
-         "pjicdfmcmiihceiefbmioikgkcicochj", "plebdlehcdhfkmidnmfpolcifjngmdck",
-         "pmcgpdpmlgkeociebbpdbppimbeheoli"});
+constexpr auto kKioskSessionAllowlist = base::MakeFixedFlatSet<
+    std::string_view>(
+    {"adbijfidmjidmkkpiglnfkflcoblkfmn", "adpfhflbokfdhnfakijgjkpkjegncbpl",
+     "agkggapglfgffelalcfgbjmhkaljnbmn", "alaoimaeafbgfglpffgcidfgbjnekifp",
+     "alhlkpgheiefedomljbenmkpconkffhk", "amdpebpoiccejfcnocgebkidfmkcdfei",
+     "aoebmljacknghkklaholjkflllbghhnj", "bgldcjbajnkfkephalfogfgklkgjnjeo",
+     "bhcnmihmgdljpnnoobnbdmdjhmfgcpio", "bloholppicibpgbagaebcaagiikicjbn",
+     "cafpcfibibiomlehdnmabchhekeifbgb", "cdomppfkcljjopjijjdchhjfioljaeph",
+     "cgihdamofndnjjlglmcaabdafhmoconf", "ckmkndfplnldgohnnkhmeokbmedpdbjl",
+     "clbgknjcblogheibmcbbdlpkollmgofh", "cmhiajbopgbagidplpiaclnpglmhbhka",
+     "cpbpbhkfonocjjamhjeabdihibkoajlc", "dakemaookmhkdfgcgebakflmhgdhille",
+     "dakmgckkclepfbfeldlgenikiobflcne", "ddhhodggehedggajomidnmgchfnbeold",
+     "dfjigmapgofdlgieniibjdcddlaafick", "dinalfjmfmjkdnkgbbjncgchmghijpgl",
+     "ealpglkmnpenllgjjgdojoemohidefdm", "edhlcbaemfhpoblalbdgeegmaddjdcae",
+     "edpaojhfdnnebhmmhdlpnpomoaopfjod", "efdahhfldoeikfglgolhibmdidbnpneo",
+     "emlbcjpcbepfnhpkiidenlnfdjbghmpg", "fammfnbkkollpklfkachppebochgakjg",
+     "fcichhfeoaikaoldkncmggipmpcbgffg", "fdlpibjfnlhnmeckjjhfiejfdghkmkdm",
+     "gbecpjnejcnafnkgfciepngjcndodann", "gbgncgdjjnelalecmmkimnlgfpmbihog",
+     "gcefeoeohcoeoofmehgjfipjiepodlhg", "gdehbmmmjkddbonbmknngoigkleicpec",
+     "genfdmkliekafjhadcpnhefgicceohhd", "gmdgbdlpbnhiogedlhmdiceocbgcbpgi",
+     "gobhocmdcdpfebockbogdfhnebgmemnf", "hadonmdpeimgfpmmmeldbmjiknnbfdhk",
+     "hbcogfhdhehbfnedbbboiiddpkkjjnio", "hbfbekdejbpmnpilhdnfokjehnianfeb",
+     "hblfbmjdaalalhifaajnnodlkiloengc", "hchdcamjekgapahefjapegmaapggeafe",
+     "hebfpdlglfmneladiogocbflmbjneeoh", "hgkaljnpgngpcgnaonmbdgaolefknaaj",
+     "hhbmmipodfklmbmiaegcbmbfmmfbngnf", "hjbkdjhfdcinjcljfbealemkioalnfao",
+     "ibboejlnnenbhpjfpgoglholgpdjjeff", "icfpencnfmadodjpbbdipkkkljmamine",
+     "iflkfmkmpafjfdkkokpkjpjmiogkdjjl", "igknghlgndjihblholjbbhjbcfilkilb",
+     "ilehifjdadbblbcnciiggmcbmobkikcb", "jamdkebjilnlfjndffcnekbipcfkhmem",
+     "jcgamccimilnfjpbkbadommjcaplmfod", "jefdfinffojbalcgpkigjjijghmllgil",
+     "jiecdjmgkgmgmbonhifblhfaaecnomcj", "jifdnnnegbhoagepoobbmajnpkmcbjig",
+     "jjlmjgfhdijljijikefhmgmhbchnkmnm", "jmiabaaccndlngedakcjbpbgokhgcpfd",
+     "jnlegeoomaehdodfmpmlflpjapebjjjl", "jnlhnplbndpohngdfjhmdinlpofclhdp",
+     "kacodfanpfkedlelnagnbgfbaabjfddn", "kbkcdgjhbdlplagmlcpafgamnapneoba",
+     "kcdfcljkllboedjeoaicmmabopnnaoaa", "kdffphekpginklcnoefcelkjclbjnbmi",
+     "kedeaijhpgoggdafoabafeldkoolemig", "kgoklcfigmpofpbkdglgbhfgpjdjgppl",
+     "kjbdapadhmcgplddmcggjkhacdnpjmod", "kpjcmnnhdgonbhjnfhebgapnkicknmpp",
+     "lfemdemifjedlccfbhpocnicmjlcgmce", "lgpjgoglfmjggeggfelogaboagbcaklg",
+     "lmdoekjmofbfghllkonahbfdcckmgjlf", "lnokaenamkoojjbhehhpggplknlbejmi",
+     "mbkamiddebohpehiafofidepfffpffln", "mfejnceblfpkdodajfohmjimcbipnhhh",
+     "mfgkakkfpnhfmnipnbehiglkjijancnk", "mhboapffkffmmcggindghkakhdhmjcje",
+     "mhdohnfjdghnpjmhnlodibcnjlaeinap", "mkgbgfehlfaioaejpaedngdohcpdpbpd",
+     "nanoidlkencgghkphophigbmnohnbbcb", "nclhjadnjgfjocbnfmlcfnagnieialof",
+     "nddaogoljagaikdogplnajkdggkfmgei", "ngpbnegpinocjhpnppjeppllflpgafkk",
+     "nhlaojpmboioihghmmdbhgcbjgmcicdk", "nickmpjdfebcopckkfjmflblnmijbiom",
+     "nloplhgjobaomjdppnbcdjfgbefifbdo", "obgbgecgadcagmhnanalmklenjajimld",
+     "oblnbnkmblikfegpcngkcbppphcenhjj", "ocljbfllcpgnlnnaommbmaphaagjmkmj",
+     "odjaaghiehpobimgdjjfofmablbaleem", "ofaokfiblaffkgcapcilcehdhlidehcd",
+     "olaaocfpicpjiocmoklnbfpdlbglbadp", "omkghcboodpimaoimdkmigofhjcpmpeb",
+     "omlplbdgdcpaaknjnkodikcklbkhefoh", "oopdabjckchhklpldcdjllmedcdnbdio",
+     "pjdhfcpflabeafmgdpgdfdejbhkdcgja", "pjicdfmcmiihceiefbmioikgkcicochj",
+     "plebdlehcdhfkmidnmfpolcifjngmdck", "pmcgpdpmlgkeociebbpdbppimbeheoli"});
 
 // Add only allowlisted test app ids.
 constexpr auto kTestAllowlist = {
diff --git a/chrome/browser/apps/platform_apps/api/BUILD.gn b/chrome/browser/apps/platform_apps/api/BUILD.gn
index 56b96ec3..5cb74a1 100644
--- a/chrome/browser/apps/platform_apps/api/BUILD.gn
+++ b/chrome/browser/apps/platform_apps/api/BUILD.gn
@@ -28,8 +28,6 @@
     "browser/browser_api.h",
     "browser_context_keyed_service_factories.cc",
     "browser_context_keyed_service_factories.h",
-    "deprecation_features.cc",
-    "deprecation_features.h",
     "media_galleries/blob_data_source_factory.cc",
     "media_galleries/blob_data_source_factory.h",
     "media_galleries/media_galleries_api.cc",
diff --git a/chrome/browser/apps/platform_apps/api/deprecation_features.cc b/chrome/browser/apps/platform_apps/api/deprecation_features.cc
deleted file mode 100644
index 3c3819fd..0000000
--- a/chrome/browser/apps/platform_apps/api/deprecation_features.cc
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/apps/platform_apps/api/deprecation_features.h"
-
-namespace chrome_apps::features {
-
-// Deprecates the Media Galleries Chrome App APIs.
-BASE_FEATURE(kDeprecateMediaGalleriesApis,
-             "DeprecateMediaGalleriesApis",
-             base::FEATURE_DISABLED_BY_DEFAULT);
-
-}  // namespace chrome_apps::features
diff --git a/chrome/browser/apps/platform_apps/api/deprecation_features.h b/chrome/browser/apps/platform_apps/api/deprecation_features.h
deleted file mode 100644
index 0bf69230..0000000
--- a/chrome/browser/apps/platform_apps/api/deprecation_features.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_APPS_PLATFORM_APPS_API_DEPRECATION_FEATURES_H_
-#define CHROME_BROWSER_APPS_PLATFORM_APPS_API_DEPRECATION_FEATURES_H_
-
-#include "base/feature_list.h"
-
-namespace chrome_apps::features {
-
-BASE_DECLARE_FEATURE(kDeprecateMediaGalleriesApis);
-
-}  // namespace chrome_apps::features
-
-#endif  // CHROME_BROWSER_APPS_PLATFORM_APPS_API_DEPRECATION_FEATURES_H_
diff --git a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_api.cc b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_api.cc
index 8d8c0734..add7a93 100644
--- a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_api.cc
+++ b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_api.cc
@@ -24,7 +24,6 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
-#include "chrome/browser/apps/platform_apps/api/deprecation_features.h"
 #include "chrome/browser/apps/platform_apps/api/media_galleries/blob_data_source_factory.h"
 #include "chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_api_util.h"
 #include "chrome/browser/browser_process.h"
@@ -96,8 +95,6 @@
 
 const char kInvalidGalleryId[] = "-1";
 
-const char kDeprecatedError[] =
-    "Media Galleries API is deprecated on this platform.";
 const char kNoRenderFrameOrRenderProcessError[] =
     "No render frame or render process.";
 const char kNoWebContentsError[] = "Could not find web contents.";
@@ -386,9 +383,6 @@
 
 ExtensionFunction::ResponseAction
 MediaGalleriesGetMediaFileSystemsFunction::Run() {
-  if (base::FeatureList::IsEnabled(features::kDeprecateMediaGalleriesApis))
-    return RespondNow(Error(kDeprecatedError));
-
   std::optional<GetMediaFileSystems::Params> params(
       GetMediaFileSystems::Params::Create(args()));
   EXTENSION_FUNCTION_VALIDATE(params);
@@ -506,9 +500,6 @@
 
 ExtensionFunction::ResponseAction
 MediaGalleriesAddUserSelectedFolderFunction::Run() {
-  if (base::FeatureList::IsEnabled(features::kDeprecateMediaGalleriesApis))
-    return RespondNow(Error(kDeprecatedError));
-
   std::string error;
   const bool result =
       Setup(Profile::FromBrowserContext(browser_context()), &error,
@@ -617,9 +608,6 @@
     default;
 
 ExtensionFunction::ResponseAction MediaGalleriesGetMetadataFunction::Run() {
-  if (base::FeatureList::IsEnabled(features::kDeprecateMediaGalleriesApis))
-    return RespondNow(Error(kDeprecatedError));
-
   EXTENSION_FUNCTION_VALIDATE(args().size() >= 1);
   EXTENSION_FUNCTION_VALIDATE(args()[0].is_string());
   const std::string& blob_uuid = args()[0].GetString();
@@ -777,9 +765,6 @@
 ExtensionFunction::ResponseAction MediaGalleriesAddGalleryWatchFunction::Run() {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  if (base::FeatureList::IsEnabled(features::kDeprecateMediaGalleriesApis))
-    return RespondNow(Error(kDeprecatedError));
-
   Profile* profile = Profile::FromBrowserContext(browser_context());
   DCHECK(profile);
 
@@ -856,9 +841,6 @@
 MediaGalleriesRemoveGalleryWatchFunction::Run() {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  if (base::FeatureList::IsEnabled(features::kDeprecateMediaGalleriesApis))
-    return RespondNow(Error(kDeprecatedError));
-
   if (!render_frame_host() || !render_frame_host()->GetProcess())
     return RespondNow(Error(kNoRenderFrameOrRenderProcessError));
 
diff --git a/chrome/browser/ash/login/challenge_response_auth_keys_loader_browsertest.cc b/chrome/browser/ash/login/challenge_response_auth_keys_loader_browsertest.cc
index 97e33f26..5b16e4d 100644
--- a/chrome/browser/ash/login/challenge_response_auth_keys_loader_browsertest.cc
+++ b/chrome/browser/ash/login/challenge_response_auth_keys_loader_browsertest.cc
@@ -35,12 +35,12 @@
 
 constexpr char kUserEmail[] = "testuser@example.com";
 
-Profile* GetProfile() {
+Profile* GetOriginalProfile() {
   return ProfileHelper::GetSigninProfile()->GetOriginalProfile();
 }
 
 extensions::ProcessManager* GetProcessManager() {
-  return extensions::ProcessManager::Get(GetProfile());
+  return extensions::ProcessManager::Get(GetOriginalProfile());
 }
 
 }  // namespace
@@ -65,7 +65,7 @@
         base::TimeDelta::Max());
 
     extension_force_install_mixin_.InitWithDeviceStateMixin(
-        GetProfile(), &device_state_mixin_);
+        GetOriginalProfile(), &device_state_mixin_);
 
     // Register the ChallengeResponseKey for the user.
     user_manager::KnownUser(g_browser_process->local_state())
@@ -112,7 +112,8 @@
 
   void InstallExtension(bool wait_on_extension_loaded) {
     test_certificate_provider_extension_mixin_.ForceInstall(
-        GetProfile(), /*wait_on_extension_loaded=*/wait_on_extension_loaded,
+        GetOriginalProfile(),
+        /*wait_on_extension_loaded=*/wait_on_extension_loaded,
         /*immediately_provide_certificates=*/wait_on_extension_loaded);
   }
 
diff --git a/chrome/browser/browser_controls/android/BUILD.gn b/chrome/browser/browser_controls/android/BUILD.gn
index ee22c9c..377c52c 100644
--- a/chrome/browser/browser_controls/android/BUILD.gn
+++ b/chrome/browser/browser_controls/android/BUILD.gn
@@ -15,6 +15,8 @@
     "java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsUtils.java",
     "java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager.java",
     "java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java",
+    "java/src/org/chromium/chrome/browser/browser_controls/TopControlLayer.java",
+    "java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java",
   ]
 
   deps = [
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlLayer.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlLayer.java
new file mode 100644
index 0000000..e9007e2a
--- /dev/null
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlLayer.java
@@ -0,0 +1,30 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.browser_controls;
+
+import org.chromium.build.annotations.NullMarked;
+import org.chromium.chrome.browser.browser_controls.TopControlsStacker.TopControlType;
+import org.chromium.chrome.browser.browser_controls.TopControlsStacker.TopControlVisibility;
+
+/** Interface definition for any View registering itself as a top control. */
+@NullMarked
+public interface TopControlLayer {
+    /** Return the type of the layer. This should not change once the layer is created. */
+    @TopControlType
+    int getTopControlType();
+
+    /** Return the current height of the layer. */
+    int getHeight();
+
+    /** Whether the layer is visible in the UI. */
+    @TopControlVisibility
+    int getTopControlVisibility();
+
+    /**
+     * Return if the layer should contribute to the total height, which a view may not if it draws
+     * over other views, for example the progress bar.
+     */
+    boolean contributesToTotalHeight();
+}
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java
new file mode 100644
index 0000000..6c0b52d
--- /dev/null
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/TopControlsStacker.java
@@ -0,0 +1,83 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.browser_controls;
+
+import androidx.annotation.IntDef;
+
+import org.chromium.build.annotations.NullMarked;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Coordinator class for UI layers in the top browser controls. This class manages the relative
+ * y-axis position for every registered top control layer.
+ */
+@NullMarked
+public class TopControlsStacker implements BrowserControlsStateProvider.Observer {
+    private static final String TAG = "TopControlsStacker";
+
+    /** Enums that defines the types of top controls. */
+    @Target(ElementType.TYPE_USE)
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+        TopControlType.STATUS_INDICATOR,
+        TopControlType.TABSTRIP,
+        TopControlType.TOOLBAR,
+        TopControlType.BOOKMARK_BAR,
+        TopControlType.HAIRLINE,
+        TopControlType.PROGRESS_BAR,
+    })
+    public @interface TopControlType {
+        int STATUS_INDICATOR = 0;
+        int TABSTRIP = 1;
+        int TOOLBAR = 2;
+        int BOOKMARK_BAR = 3;
+        int HAIRLINE = 4;
+        int PROGRESS_BAR = 5;
+    }
+
+    /** Enum that defines the possible visibilities of a top control. */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+        TopControlVisibility.VISIBLE,
+        TopControlVisibility.HIDDEN,
+    })
+    public @interface TopControlVisibility {
+        int VISIBLE = 0;
+        int HIDDEN = 1;
+    }
+
+    // All controls are stored in a Map and we should only have one of each control type.
+    private final Map<@TopControlType Integer, TopControlLayer> mControls;
+
+    public TopControlsStacker() {
+        mControls = new HashMap<>();
+    }
+
+    /**
+     * Adds a new control layer to the list of active top controls.
+     *
+     * @param newControl TopControlLayer to add to the active controls.
+     */
+    public void addControl(TopControlLayer newControl) {
+        assert mControls.get(newControl.getTopControlType()) == null
+                : "Trying to add a duplicate control type.";
+        mControls.put(newControl.getTopControlType(), newControl);
+    }
+
+    /**
+     * Removes a control layer from the list of active top controls.
+     *
+     * @param control The TopControlLayer to remove from the active controls.
+     */
+    public void removeControl(TopControlLayer control) {
+        mControls.remove(control.getTopControlType());
+    }
+}
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 54b4eab..a5415d8e 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -234,7 +234,6 @@
         <part file="ui/views/webid/resources/webid_resources.grdp" />
       </if>
       <if expr="chrome_root_store_cert_management_ui">
-        <include name="IDR_CERT_MANAGER_DIALOG_HTML" file="resources\certificate_manager\certificate_manager_dialog.html" type="BINDATA" />
         <include name="IDR_CERT_MANAGER_DIALOG_V2_HTML" file="resources\certificate_manager\certificate_manager_dialog_v2.html" type="BINDATA" />
       </if>
     </includes>
diff --git a/chrome/browser/certificate_manager_model.cc b/chrome/browser/certificate_manager_model.cc
deleted file mode 100644
index c125041..0000000
--- a/chrome/browser/certificate_manager_model.cc
+++ /dev/null
@@ -1,822 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/certificate_manager_model.h"
-
-#include <utility>
-
-#include "base/functional/bind.h"
-#include "base/functional/callback_helpers.h"
-#include "base/i18n/time_formatting.h"
-#include "base/logging.h"
-#include "base/memory/raw_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/scoped_observation.h"
-#include "base/sequence_checker.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/task/bind_post_task.h"
-#include "base/task/sequenced_task_runner.h"
-#include "build/build_config.h"
-#include "chrome/browser/net/nss_service.h"
-#include "chrome/browser/net/nss_service_factory.h"
-#include "chrome/browser/net/system_network_context_manager.h"
-#include "chrome/browser/ui/crypto_module_password_dialog_nss.h"
-#include "chrome/common/net/x509_certificate_model_nss.h"
-#include "chrome/grit/generated_resources.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/browser_task_traits.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/resource_context.h"
-#include "crypto/scoped_nss_types.h"
-#include "net/base/net_errors.h"
-#include "net/cert/cert_database.h"
-#include "net/cert/nss_cert_database.h"
-#include "net/cert/x509_certificate.h"
-#include "net/cert/x509_util_nss.h"
-#include "net/net_buildflags.h"
-#include "ui/base/l10n/l10n_util.h"
-
-#if BUILDFLAG(IS_CHROMEOS)
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/certificate_provider/certificate_provider.h"
-#include "chrome/browser/certificate_provider/certificate_provider_service.h"
-#include "chrome/browser/certificate_provider/certificate_provider_service_factory.h"
-#include "chrome/browser/policy/networking/user_network_configuration_updater.h"
-#include "chrome/browser/policy/networking/user_network_configuration_updater_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chromeos/ash/components/network/policy_certificate_provider.h"
-#include "chromeos/constants/chromeos_features.h"
-#include "chrome/browser/ash/kcer/kcer_factory_ash.h"
-#include "chrome/browser/policy/networking/user_network_configuration_updater_ash.h"
-#include "chromeos/ash/components/kcer/kcer.h"
-#include "chromeos/ash/components/kcer/kcer_histograms.h"
-#include "chromeos/components/onc/certificate_scope.h"
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-using content::BrowserThread;
-
-// CertificateManagerModel is created on the UI thread. It needs a
-// NSSCertDatabase handle (and on ChromeOS it needs to get the TPM status) which
-// needs to be done on the IO thread.
-//
-// The initialization flow is roughly:
-//
-//               UI thread                              IO Thread
-//
-//   CertificateManagerModel::Create
-//                  \--------------------------------------v
-//                                CertificateManagerModel::GetCertDBOnIOThread
-//                                                         |
-//                                               NssCertDatabaseGetter
-//                                                         |
-//                               CertificateManagerModel::DidGetCertDBOnIOThread
-//                  v--------------------------------------/
-// CertificateManagerModel::DidGetCertDBOnUIThread
-//                  |
-//     new CertificateManagerModel
-//                  |
-//               callback
-
-namespace {
-
-std::string GetCertificateOrg(CERTCertificate* cert) {
-  std::string org =
-      x509_certificate_model::GetSubjectOrgName(cert, std::string());
-  if (org.empty())
-    org = x509_certificate_model::GetSubjectDisplayName(cert);
-
-  return org;
-}
-
-#if BUILDFLAG(IS_CHROMEOS)
-// Log message for an operation that can not be performed on a certificate of a
-// given source.
-constexpr char kOperationNotPermitted[] =
-    "Operation not permitted on a certificate. Source: ";
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-}  // namespace
-
-// A source of certificates that should be displayed on the certificate manager
-// UI. Currently, a CertsSource yields CertInfo objects. Each CertInfo contains
-// a NSS ScopedCERTCertificate.
-class CertificateManagerModel::CertsSource {
- public:
-  // |certs_source_updated_callback| will be invoked when the list of
-  // certificates provided by this CertsSource changes.
-  explicit CertsSource(base::RepeatingClosure certs_source_updated_callback)
-      : certs_source_updated_callback_(certs_source_updated_callback) {}
-
-  CertsSource(const CertsSource&) = delete;
-  CertsSource& operator=(const CertsSource&) = delete;
-
-  virtual ~CertsSource() = default;
-
-  // Returns the CertInfos provided by this CertsSource.
-  const std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>>&
-  cert_infos() const {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    return cert_infos_;
-  }
-
-  // Returns true if |cert| is in this CertsSource's certificate list.
-  bool HasCert(CERTCertificate* cert) const {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    for (const auto& cert_info : cert_infos_) {
-      if (cert_info->cert() == cert)
-        return true;
-    }
-    return false;
-  }
-
-  // Triggers a refresh of this CertsSource. When done, the
-  // |certs_source_updated_callback| passed to the constructor will be invoked.
-  virtual void Refresh() = 0;
-
-  // If any CertsSource's |IsHoldBackUpdates| is returning true, the
-  // CertificateManagerModel will not notify its Observer about updates.
-  bool IsHoldBackUpdates() const { return hold_back_updates_; }
-
-  // Set trust values for certificate.
-  // |trust_bits| should be a bit field of TRUST* values from NSSCertDatabase.
-  // Returns true on success or false on failure.
-  virtual bool SetCertTrust(CERTCertificate* cert,
-                            net::CertType type,
-                            net::NSSCertDatabase::TrustBits trust_bits) = 0;
-
-  // Remove the cert from the cert database.
-  virtual void RemoveFromDatabase(
-      net::ScopedCERTCertificate cert,
-      base::OnceCallback<void(bool /*success*/)> callback) = 0;
-
- protected:
-  // To be called by subclasses to set the CertInfo list provided by this
-  // CertsSource. If this CertsSource is signalling that updates should be held
-  // back (|SetHoldBackUpdates(true)|, this will be set to false. The
-  // |certs_source_updated_callback| passed to the constructor will be invoked.
-  void SetCertInfos(
-      std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>>
-          cert_infos) {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    cert_infos_.swap(cert_infos);
-    SetHoldBackUpdates(false);
-    certs_source_updated_callback_.Run();
-  }
-
-  // Signal to |CertificateManagerModel| that updates to its Observer should be
-  // held back. This will be automatically taken back on |SetCertInfos|.
-  // This should only be used by |CertsSource|s that provide their list of
-  // certificates asynchronously but expect their certificate listing to be
-  // fast.
-  void SetHoldBackUpdates(bool hold_back_updates) {
-    hold_back_updates_ = hold_back_updates;
-  }
-
-  // Used to verify that the constructor, and accessing |cert_infos_| are
-  // performed on the same sequence. Offered to subclasses so they can also
-  // check that they're being called on a valid sequence.
-  SEQUENCE_CHECKER(sequence_checker_);
-
- private:
-  // Cached CertInfos provided by this CertsSource.
-  std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>> cert_infos_;
-
-  // Invoked when the list of certificates provided by this CertsSource has
-  // changed.
-  base::RepeatingClosure certs_source_updated_callback_;
-
-  // If true, the CertificateManagerModel should be holding back update
-  // notifications.
-  bool hold_back_updates_ = false;
-};
-
-namespace {
-// Provides certificates enumerable from a NSSCertDatabase.
-class CertsSourcePlatformNSS : public CertificateManagerModel::CertsSource,
-                               net::CertDatabase::Observer {
- public:
-  CertsSourcePlatformNSS(base::RepeatingClosure certs_source_updated_callback,
-                         net::NSSCertDatabase* nss_cert_database)
-      : CertsSource(certs_source_updated_callback),
-        cert_db_(nss_cert_database) {
-    // Observe CertDatabase changes to refresh when it's updated.
-    cert_database_observation_.Observe(net::CertDatabase::GetInstance());
-  }
-
-  CertsSourcePlatformNSS(const CertsSourcePlatformNSS&) = delete;
-  CertsSourcePlatformNSS& operator=(const CertsSourcePlatformNSS&) = delete;
-
-  ~CertsSourcePlatformNSS() override = default;
-
-  // net::CertDatabase::Observer
-  void OnTrustStoreChanged() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    Refresh();
-  }
-  void OnClientCertStoreChanged() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    Refresh();
-  }
-
-  void Refresh() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    SetHoldBackUpdates(true);
-    DVLOG(1) << "refresh started";
-    std::vector<crypto::ScopedPK11Slot> modules;
-    cert_db_->ListModules(&modules, false);
-    DVLOG(1) << "refresh waiting for unlocking...";
-    chrome::UnlockSlotsIfNecessary(
-        std::move(modules), kCryptoModulePasswordListCerts,
-        net::HostPortPair(),  // unused.
-        nullptr,              // TODO(mattm): supply parent window.
-        base::BindOnce(&CertsSourcePlatformNSS::RefreshSlotsUnlocked,
-                       weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  bool SetCertTrust(CERTCertificate* cert,
-                    net::CertType type,
-                    net::NSSCertDatabase::TrustBits trust_bits) override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    return cert_db_->SetCertTrust(cert, type, trust_bits);
-  }
-
-  void RemoveFromDatabase(net::ScopedCERTCertificate cert,
-                          base::OnceCallback<void(bool)> callback) override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    auto callback_and_runner =
-        base::BindPostTaskToCurrentDefault(std::move(callback));
-
-    // Passing Unretained(cert_db_) is safe because the corresponding profile
-    // should be alive during this call and therefore the deletion task for the
-    // database can only be scheduled on the IO thread after this task.
-    content::GetIOThreadTaskRunner({})->PostTask(
-        FROM_HERE, base::BindOnce(&net::NSSCertDatabase::DeleteCertAndKeyAsync,
-                                  base::Unretained(cert_db_), std::move(cert),
-                                  std::move(callback_and_runner)));
-  }
-
- private:
-  void RefreshSlotsUnlocked() {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    DVLOG(1) << "refresh listing certs...";
-    cert_db_->ListCertsInfo(base::BindOnce(&CertsSourcePlatformNSS::DidGetCerts,
-                                           weak_ptr_factory_.GetWeakPtr()),
-#if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
-                            net::NSSCertDatabase::NSSRootsHandling::kExclude
-#else
-                            net::NSSCertDatabase::NSSRootsHandling::kInclude
-#endif
-    );
-  }
-
-  void DidGetCerts(net::NSSCertDatabase::CertInfoList cert_info_list) {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    DVLOG(1) << "refresh finished for platform provided certificates";
-
-    std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>> cert_infos;
-    cert_infos.reserve(cert_info_list.size());
-
-    for (auto& cert_info : cert_info_list) {
-      net::CertType type =
-          x509_certificate_model::GetType(cert_info.cert.get());
-      bool can_be_deleted = !cert_info.on_read_only_slot;
-      bool hardware_backed = cert_info.hardware_backed;
-      std::u16string name = GetName(cert_info.cert.get(), hardware_backed);
-
-      cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
-          /*cert=*/std::move(cert_info.cert), type, name, can_be_deleted,
-          /*untrusted=*/cert_info.untrusted,
-          /*source=*/CertificateManagerModel::CertInfo::Source::kPlatform,
-          /*web_trust_anchor=*/cert_info.web_trust_anchor, hardware_backed,
-          /*device_wide=*/cert_info.device_wide));
-    }
-
-    SetCertInfos(std::move(cert_infos));
-  }
-
-  static std::u16string GetName(CERTCertificate* cert,
-                                bool is_hardware_backed) {
-    std::u16string name =
-        base::UTF8ToUTF16(x509_certificate_model::GetCertNameOrNickname(cert));
-    if (is_hardware_backed) {
-      name = l10n_util::GetStringFUTF16(
-          IDS_CERT_MANAGER_HARDWARE_BACKED_KEY_FORMAT, name,
-          l10n_util::GetStringUTF16(IDS_CERT_MANAGER_HARDWARE_BACKED));
-    }
-    return name;
-  }
-
-  // The source NSSCertDatabase used for listing certificates.
-  raw_ptr<net::NSSCertDatabase> cert_db_;
-
-  // ScopedObservation to keep track of the observer for net::CertDatabase.
-  base::ScopedObservation<net::CertDatabase, net::CertDatabase::Observer>
-      cert_database_observation_{this};
-
-  base::WeakPtrFactory<CertsSourcePlatformNSS> weak_ptr_factory_{this};
-};
-
-#if BUILDFLAG(IS_CHROMEOS)
-// Provides certificates installed through enterprise policy.
-class CertsSourcePolicy : public CertificateManagerModel::CertsSource,
-                          ash::PolicyCertificateProvider::Observer {
- public:
-  // Defines which policy-provided certificates this CertsSourcePolicy instance
-  // should yield.
-  enum class Mode {
-    // Only certificates which are installed by enterprise policy, but not Web
-    // trusted.
-    kPolicyCertsWithoutWebTrust,
-    // Only certificates which are installed by enterprise policy and Web
-    // trusted.
-    kPolicyCertsWithWebTrust
-  };
-
-  CertsSourcePolicy(base::RepeatingClosure certs_source_updated_callback,
-                    ash::PolicyCertificateProvider* policy_certs_provider,
-                    Mode mode)
-      : CertsSource(certs_source_updated_callback),
-        policy_certs_provider_(policy_certs_provider),
-        mode_(mode) {
-    policy_certs_provider_->AddPolicyProvidedCertsObserver(this);
-  }
-
-  CertsSourcePolicy(const CertsSourcePolicy&) = delete;
-  CertsSourcePolicy& operator=(const CertsSourcePolicy&) = delete;
-
-  ~CertsSourcePolicy() override {
-    policy_certs_provider_->RemovePolicyProvidedCertsObserver(this);
-  }
-
-  // ash::PolicyCertificateProvider::Observer
-  void OnPolicyProvidedCertsChanged() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    Refresh();
-  }
-
-  void Refresh() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    switch (mode_) {
-      case Mode::kPolicyCertsWithoutWebTrust:
-        RefreshImpl(policy_certs_provider_->GetCertificatesWithoutWebTrust(
-                        chromeos::onc::CertificateScope::Default()),
-                    false /* policy_web_trusted */);
-        break;
-      case Mode::kPolicyCertsWithWebTrust:
-        RefreshImpl(policy_certs_provider_->GetWebTrustedCertificates(
-                        chromeos::onc::CertificateScope::Default()),
-                    true /* policy_web_trusted */);
-        break;
-      default:
-        NOTREACHED();
-    }
-  }
-
-  bool SetCertTrust(CERTCertificate* cert,
-                    net::CertType type,
-                    net::NSSCertDatabase::TrustBits trust_bits) override {
-    // Trust of policy-provided certificates can not be changed.
-    LOG(WARNING) << kOperationNotPermitted << "Policy";
-    return false;
-  }
-
-  void RemoveFromDatabase(net::ScopedCERTCertificate cert,
-                          base::OnceCallback<void(bool)> callback) override {
-    // Policy-provided certificates can not be deleted.
-    LOG(WARNING) << kOperationNotPermitted << "Policy";
-    base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback), false));
-  }
-
- private:
-  void RefreshImpl(const net::CertificateList& certificates,
-                   bool policy_web_trusted) {
-    std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>> cert_infos;
-    cert_infos.reserve(certificates.size());
-
-    for (const auto& policy_cert : certificates) {
-      net::ScopedCERTCertificate nss_cert(
-          net::x509_util::CreateCERTCertificateFromX509Certificate(
-              policy_cert.get()));
-      if (!nss_cert)
-        continue;
-
-      net::CertType type = x509_certificate_model::GetType(nss_cert.get());
-      std::u16string cert_name = base::UTF8ToUTF16(
-          x509_certificate_model::GetCertNameOrNickname(nss_cert.get()));
-      cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
-          std::move(nss_cert), type, std::move(cert_name),
-          false /* can_be_deleted */, false /* untrusted */,
-          CertificateManagerModel::CertInfo::Source::kPolicy,
-          policy_web_trusted /* web_trust_anchor */,
-          false /* hardware_backed */, false /* device_wide */));
-    }
-
-    SetCertInfos(std::move(cert_infos));
-  }
-
-  raw_ptr<ash::PolicyCertificateProvider> policy_certs_provider_;
-  Mode mode_;
-};
-
-// Provides certificates made available by extensions through the
-// chrome.certificateProvider API.
-class CertsSourceExtensions : public CertificateManagerModel::CertsSource {
- public:
-  CertsSourceExtensions(base::RepeatingClosure certs_source_updated_callback,
-                        std::unique_ptr<chromeos::CertificateProvider>
-                            certificate_provider_service)
-      : CertsSource(certs_source_updated_callback),
-        certificate_provider_service_(std::move(certificate_provider_service)) {
-  }
-
-  CertsSourceExtensions(const CertsSourceExtensions&) = delete;
-  CertsSourceExtensions& operator=(const CertsSourceExtensions&) = delete;
-
-  void Refresh() override {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    certificate_provider_service_->GetCertificates(base::BindOnce(
-        &CertsSourceExtensions::DidGetCerts, weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  bool SetCertTrust(CERTCertificate* cert,
-                    net::CertType type,
-                    net::NSSCertDatabase::TrustBits trust_bits) override {
-    // Extension-provided certificates are user certificates; changing trust
-    // does not make sense here.
-    LOG(WARNING) << kOperationNotPermitted << "Extension";
-    return false;
-  }
-
-  void RemoveFromDatabase(net::ScopedCERTCertificate cert,
-                          base::OnceCallback<void(bool)> callback) override {
-    // Extension-provided certificates can not be deleted.
-    LOG(WARNING) << kOperationNotPermitted << "Extension";
-    base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback), false));
-  }
-
- private:
-  void DidGetCerts(net::ClientCertIdentityList cert_identities) {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    std::vector<std::unique_ptr<CertificateManagerModel::CertInfo>> cert_infos;
-
-    cert_infos.reserve(cert_identities.size());
-    for (const auto& identity : cert_identities) {
-      net::ScopedCERTCertificate nss_cert(
-          net::x509_util::CreateCERTCertificateFromX509Certificate(
-              identity->certificate()));
-      if (!nss_cert)
-        continue;
-
-      std::u16string cert_name = base::UTF8ToUTF16(
-          x509_certificate_model::GetCertNameOrNickname(nss_cert.get()));
-      std::u16string display_name = l10n_util::GetStringFUTF16(
-          IDS_CERT_MANAGER_EXTENSION_PROVIDED_FORMAT, std::move(cert_name));
-
-      cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
-          std::move(nss_cert), net::CertType::USER_CERT /* type */,
-          display_name, false /* can_be_deleted */, false /* untrusted */,
-          CertificateManagerModel::CertInfo::Source::kExtension,
-          false /* web_trust_anchor */, false /* hardware_backed */,
-          false /* device_wide */));
-    }
-
-    SetCertInfos(std::move(cert_infos));
-  }
-
-  std::unique_ptr<chromeos::CertificateProvider> certificate_provider_service_;
-
-  base::WeakPtrFactory<CertsSourceExtensions> weak_ptr_factory_{this};
-};
-
-void RecordImportFromPKCS12KcerResult(
-    int nss_import_result,
-    base::OnceCallback<void(int nss_import_result)> callback,
-    base::expected<void, kcer::Error> kcer_import_result) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  if (kcer_import_result.has_value()) {
-    kcer::RecordPkcs12MigrationUmaEvent(
-        kcer::Pkcs12MigrationUmaEvent::kPkcs12ImportKcerSuccess);
-  } else {
-    kcer::RecordPkcs12MigrationUmaEvent(
-        kcer::Pkcs12MigrationUmaEvent::kPkcs12ImportKcerFailed);
-    kcer::RecordKcerError(kcer_import_result.error());
-  }
-
-  // Just return the nss_import_result. Kcer will attempt to import only if NSS
-  // succeeds and even if Kcer fails, the cert should be usable.
-  return std::move(callback).Run(nss_import_result);
-}
-
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-}  // namespace
-
-CertificateManagerModel::CertInfo::CertInfo(net::ScopedCERTCertificate cert,
-                                            net::CertType type,
-                                            std::u16string name,
-                                            bool can_be_deleted,
-                                            bool untrusted,
-                                            Source source,
-                                            bool web_trust_anchor,
-                                            bool hardware_backed,
-                                            bool device_wide)
-    : cert_(std::move(cert)),
-      type_(type),
-      name_(std::move(name)),
-      can_be_deleted_(can_be_deleted),
-      untrusted_(untrusted),
-      source_(source),
-      web_trust_anchor_(web_trust_anchor),
-      hardware_backed_(hardware_backed),
-      device_wide_(device_wide) {}
-
-CertificateManagerModel::CertInfo::~CertInfo() = default;
-
-// static
-std::unique_ptr<CertificateManagerModel::CertInfo>
-CertificateManagerModel::CertInfo::Clone(const CertInfo* cert_info) {
-  return std::make_unique<CertInfo>(
-      net::x509_util::DupCERTCertificate(cert_info->cert()), cert_info->type(),
-      cert_info->name(), cert_info->can_be_deleted(), cert_info->untrusted(),
-      cert_info->source(), cert_info->web_trust_anchor(),
-      cert_info->hardware_backed(), cert_info->device_wide());
-}
-
-CertificateManagerModel::Params::Params() = default;
-CertificateManagerModel::Params::~Params() = default;
-CertificateManagerModel::Params::Params(Params&& other) = default;
-
-// static
-void CertificateManagerModel::Create(
-    content::BrowserContext* browser_context,
-    CertificateManagerModel::Observer* observer,
-    CreationCallback callback) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  std::unique_ptr<Params> params = std::make_unique<Params>();
-#if BUILDFLAG(IS_CHROMEOS)
-  params->policy_certs_provider =
-      policy::UserNetworkConfigurationUpdaterFactory::GetForBrowserContext(
-          browser_context);
-
-  chromeos::CertificateProviderService* certificate_provider_service =
-      chromeos::CertificateProviderServiceFactory::GetForBrowserContext(
-          browser_context);
-  params->extension_certificate_provider =
-      certificate_provider_service->CreateCertificateProvider();
-  params->kcer = kcer::KcerFactoryAsh::GetKcer(
-      Profile::FromBrowserContext(browser_context));
-#endif
-
-  content::GetIOThreadTaskRunner({})->PostTask(
-      FROM_HERE,
-      base::BindOnce(&CertificateManagerModel::GetCertDBOnIOThread,
-                     std::move(params),
-                     NssServiceFactory::GetForContext(browser_context)
-                         ->CreateNSSCertDatabaseGetterForIOThread(),
-                     observer, std::move(callback)));
-}
-
-CertificateManagerModel::CertificateManagerModel(
-    std::unique_ptr<Params> params,
-    Observer* observer,
-    net::NSSCertDatabase* nss_cert_database)
-    : cert_db_(nss_cert_database), observer_(observer) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  // Fill |certs_sources_|. Note that the order matters. Higher priority
-  // CertsSources must come first.
-
-  base::RepeatingClosure certs_source_updated_callback = base::BindRepeating(
-      &CertificateManagerModel::OnCertsSourceUpdated, base::Unretained(this));
-
-#if BUILDFLAG(IS_CHROMEOS)
-  // Certificates installed and web trusted by enterprise policy is the highest
-  // priority CertsSource.
-  // UserNetworkConfigurationUpdater is only available for the primary user's
-  // profile.
-  if (params->policy_certs_provider) {
-    certs_sources_.push_back(std::make_unique<CertsSourcePolicy>(
-        certs_source_updated_callback, params->policy_certs_provider,
-        CertsSourcePolicy::Mode::kPolicyCertsWithWebTrust));
-  }
-  kcer_ = params->kcer;
-#endif
-
-  // Add the main NSS DB based CertsSource.
-  certs_sources_.push_back(std::make_unique<CertsSourcePlatformNSS>(
-      certs_source_updated_callback, nss_cert_database));
-
-#if BUILDFLAG(IS_CHROMEOS)
-  // Certificates installed by enterprise policy without web trust are lower
-  // priority than the main NSS DB based CertsSource.
-  // Rationale: The user should be able to add trust to policy-provided
-  // certificates by re-importing them and modifying their trust settings.
-  if (params->policy_certs_provider) {
-    certs_sources_.push_back(std::make_unique<CertsSourcePolicy>(
-        certs_source_updated_callback, params->policy_certs_provider,
-        CertsSourcePolicy::Mode::kPolicyCertsWithoutWebTrust));
-  }
-
-  // Extensions is the lowest priority CertsSource.
-  if (params->extension_certificate_provider) {
-    certs_sources_.push_back(std::make_unique<CertsSourceExtensions>(
-        certs_source_updated_callback,
-        std::move(params->extension_certificate_provider)));
-  }
-#endif
-}
-
-CertificateManagerModel::~CertificateManagerModel() = default;
-
-void CertificateManagerModel::OnCertsSourceUpdated() {
-  if (hold_back_updates_)
-    return;
-  for (const auto& certs_source : certs_sources_) {
-    if (certs_source->IsHoldBackUpdates()) {
-      return;
-    }
-  }
-
-  observer_->CertificatesRefreshed();
-}
-
-CertificateManagerModel::CertsSource*
-CertificateManagerModel::FindCertsSourceForCert(CERTCertificate* cert) {
-  for (auto& certs_source : certs_sources_) {
-    if (certs_source->HasCert(cert))
-      return certs_source.get();
-  }
-  return nullptr;
-}
-
-void CertificateManagerModel::Refresh() {
-  hold_back_updates_ = true;
-
-  for (auto& certs_source : certs_sources_)
-    certs_source->Refresh();
-
-  hold_back_updates_ = false;
-  OnCertsSourceUpdated();
-}
-
-void CertificateManagerModel::FilterAndBuildOrgGroupingMap(
-    net::CertType filter_type,
-    CertificateManagerModel::OrgGroupingMap* out_org_grouping_map) const {
-  std::map<CERTCertificate*, std::unique_ptr<CertInfo>> cert_info_map;
-  for (const auto& certs_source : certs_sources_) {
-    for (const auto& cert_info : certs_source->cert_infos()) {
-      if (cert_info->type() != filter_type)
-        continue;
-
-      if (cert_info_map.find(cert_info->cert()) == cert_info_map.end())
-        cert_info_map[cert_info->cert()] = CertInfo::Clone(cert_info.get());
-    }
-  }
-
-  for (auto& cert_info_kv : cert_info_map) {
-    std::string org = GetCertificateOrg(cert_info_kv.second->cert());
-    (*out_org_grouping_map)[org].push_back(std::move(cert_info_kv.second));
-  }
-}
-
-void CertificateManagerModel::ImportFromPKCS12(
-    PK11SlotInfo* slot_info,
-    const std::string& data,
-    const std::u16string& password,
-    bool is_extractable,
-    base::OnceCallback<void(int nss_import_result)> callback) {
-  int nss_import_result = cert_db_->ImportFromPKCS12(slot_info, data, password,
-                                                     is_extractable, nullptr);
-
-#if BUILDFLAG(IS_CHROMEOS)
-  if (nss_import_result == net::OK) {
-    kcer::RecordPkcs12MigrationUmaEvent(
-        kcer::Pkcs12MigrationUmaEvent::kPkcs12ImportNssSuccess);
-  } else {
-    kcer::RecordPkcs12MigrationUmaEvent(
-        kcer::Pkcs12MigrationUmaEvent::kPkcs12ImportNssFailed);
-  }
-
-  // `is_extractable` == true indicates that the cert came from the "Import"
-  // button. By default it's imported into the software NSS database (aka public
-  // slot). With the experiment enabled it should also be imported into Chaps.
-  // `is_extractable` == false means that the cert came from the "Import and
-  // Bind" button and it's import into Chaps by default.
-  if ((nss_import_result == net::OK) && is_extractable &&
-      chromeos::features::IsPkcs12ToChapsDualWriteEnabled()) {
-    // Record the dual-write event. Even if the import fails, it's theoretically
-    // possible that some related objects are still created and would need to be
-    // deleted in case of a rollback.
-    kcer::KcerFactoryAsh::RecordPkcs12CertDualWritten();
-    std::string u8_password = base::UTF16ToUTF8(password);
-    return kcer_->ImportPkcs12Cert(
-        kcer::Token::kUser,
-        kcer::Pkcs12Blob(std::vector<uint8_t>(data.begin(), data.end())),
-        std::move(u8_password),
-        /*hardware_backed=*/!is_extractable, /*mark_as_migrated=*/true,
-        base::BindOnce(&RecordImportFromPKCS12KcerResult, nss_import_result,
-                       std::move(callback)));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-  return std::move(callback).Run(nss_import_result);
-}
-
-int CertificateManagerModel::ImportUserCert(const std::string& data) {
-  return cert_db_->ImportUserCert(data);
-}
-
-bool CertificateManagerModel::ImportCACerts(
-    const net::ScopedCERTCertificateList& certificates,
-    net::NSSCertDatabase::TrustBits trust_bits,
-    net::NSSCertDatabase::ImportCertFailureList* not_imported) {
-  return cert_db_->ImportCACerts(certificates, trust_bits, not_imported);
-}
-
-bool CertificateManagerModel::ImportServerCert(
-    const net::ScopedCERTCertificateList& certificates,
-    net::NSSCertDatabase::TrustBits trust_bits,
-    net::NSSCertDatabase::ImportCertFailureList* not_imported) {
-  const size_t num_certs = certificates.size();
-  bool result =
-      cert_db_->ImportServerCert(certificates, trust_bits, not_imported);
-  if (result && not_imported->size() != num_certs)
-    Refresh();
-  return result;
-}
-
-bool CertificateManagerModel::SetCertTrust(
-    CERTCertificate* cert,
-    net::CertType type,
-    net::NSSCertDatabase::TrustBits trust_bits) {
-  CertsSource* certs_source = FindCertsSourceForCert(cert);
-  if (!certs_source)
-    return false;
-  return certs_source->SetCertTrust(cert, type, trust_bits);
-}
-
-void CertificateManagerModel::RemoveFromDatabase(
-    net::ScopedCERTCertificate cert,
-    base::OnceCallback<void(bool)> callback) {
-  CertsSource* certs_source = FindCertsSourceForCert(cert.get());
-  if (!certs_source) {
-    base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback), false));
-    return;
-  }
-  return certs_source->RemoveFromDatabase(std::move(cert), std::move(callback));
-}
-
-// static
-void CertificateManagerModel::DidGetCertDBOnUIThread(
-    std::unique_ptr<Params> params,
-    CertificateManagerModel::Observer* observer,
-    CreationCallback callback,
-    net::NSSCertDatabase* cert_db) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  std::unique_ptr<CertificateManagerModel> model =
-      std::make_unique<CertificateManagerModel>(std::move(params), observer,
-                                                cert_db);
-  std::move(callback).Run(std::move(model));
-}
-
-// static
-void CertificateManagerModel::DidGetCertDBOnIOThread(
-    std::unique_ptr<Params> params,
-    CertificateManagerModel::Observer* observer,
-    CreationCallback callback,
-    net::NSSCertDatabase* cert_db) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
-  content::GetUIThreadTaskRunner({})->PostTask(
-      FROM_HERE,
-      base::BindOnce(&CertificateManagerModel::DidGetCertDBOnUIThread,
-                     std::move(params), observer, std::move(callback),
-                     cert_db));
-}
-
-// static
-void CertificateManagerModel::GetCertDBOnIOThread(
-    std::unique_ptr<Params> params,
-    NssCertDatabaseGetter database_getter,
-    CertificateManagerModel::Observer* observer,
-    CreationCallback callback) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
-  auto split_callback = base::SplitOnceCallback(
-      base::BindOnce(&CertificateManagerModel::DidGetCertDBOnIOThread,
-                     std::move(params), observer, std::move(callback)));
-
-  net::NSSCertDatabase* cert_db =
-      std::move(database_getter).Run(std::move(split_callback.first));
-  // If the NSS database was already available, |cert_db| is non-null and
-  // |did_get_cert_db_callback| has not been called. Call it explicitly.
-  if (cert_db)
-    std::move(split_callback.second).Run(cert_db);
-}
diff --git a/chrome/browser/certificate_manager_model.h b/chrome/browser/certificate_manager_model.h
deleted file mode 100644
index 182fcc7..0000000
--- a/chrome/browser/certificate_manager_model.h
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
-#define CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "base/functional/callback.h"
-#include "base/gtest_prod_util.h"
-#include "base/memory/raw_ptr.h"
-#include "build/build_config.h"
-#include "chrome/browser/net/nss_service.h"
-#include "net/cert/nss_cert_database.h"
-#include "net/cert/scoped_nss_types.h"
-#include "net/ssl/client_cert_identity.h"
-
-namespace content {
-class BrowserContext;
-}  // namespace content
-
-#if BUILDFLAG(IS_CHROMEOS)
-namespace ash {
-class PolicyCertificateProvider;
-}
-
-namespace chromeos {
-class CertificateProvider;
-}
-
-namespace kcer {
-class Kcer;
-}
-#endif
-
-// CertificateManagerModel provides the data to be displayed in the certificate
-// manager dialog, and processes changes from the view.
-class CertificateManagerModel {
- public:
-  // Holds information about a certificate, along with the certificate itself.
-  class CertInfo {
-   public:
-    enum class Source {
-      // This certificate is installed in the platform certificate database.
-      kPlatform,
-      // This certificate is provided by enterprise policy.
-      kPolicy,
-      // This certificate is provided by an extension.
-      kExtension
-    };
-
-    CertInfo(net::ScopedCERTCertificate cert,
-             net::CertType type,
-             std::u16string name,
-             bool can_be_deleted,
-             bool untrusted,
-             Source source,
-             bool web_trust_anchor,
-             bool hardware_backed,
-             bool device_wide);
-
-    CertInfo(const CertInfo&) = delete;
-    CertInfo& operator=(const CertInfo&) = delete;
-
-    ~CertInfo();
-
-    CERTCertificate* cert() const { return cert_.get(); }
-    net::CertType type() const { return type_; }
-    const std::u16string& name() const { return name_; }
-    bool can_be_deleted() const { return can_be_deleted_; }
-    bool untrusted() const { return untrusted_; }
-    Source source() const { return source_; }
-    bool web_trust_anchor() const { return web_trust_anchor_; }
-    bool hardware_backed() const { return hardware_backed_; }
-    bool device_wide() const { return device_wide_; }
-
-    // Clones a CertInfo, duplicating the contained NSS certificate.
-    static std::unique_ptr<CertInfo> Clone(const CertInfo* cert_info);
-
-   private:
-    // The certificate itself.
-    net::ScopedCERTCertificate cert_;
-
-    // The type of the certificate. Used to filter certificates to be displayed
-    // on the tabs of the certificate manager UI.
-    net::CertType type_;
-
-    // A user readable certificate name.
-    std::u16string name_;
-
-    // false if the certificate is stored on a read-only slot or provided by
-    // enterprise policy or an extension, otherwise true.
-    bool can_be_deleted_;
-
-    // true if the certificate is untrusted.
-    bool untrusted_;
-
-    // Describes where this certificate originates from.
-    Source source_;
-
-    // true if the certificate is given web trust (either by its platform trust
-    // settings, or by enterprise policy).
-    bool web_trust_anchor_;
-
-    // true if the certificate is hardware-backed. Note that extension-provided
-    // certificates are not regarded as hardware-backed.
-    bool hardware_backed_;
-
-    // true if the certificate is device-wide.
-    // Note: can be true only on Chrome OS.
-    bool device_wide_;
-
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest,
-                             CanDeleteCertificateCommonTest);
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest,
-                             CanDeleteUserCertificateTest);
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest,
-                             CanDeleteCACertificateTest);
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest,
-                             CanEditCertificateCommonTest);
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest,
-                             CanEditUserCertificateTest);
-    FRIEND_TEST_ALL_PREFIXES(CertificateHandlerTest, CanEditCACertificateTest);
-  };
-
-  class CertsSource;
-
-  // Holds parameters during construction.
-  struct Params {
-#if BUILDFLAG(IS_CHROMEOS)
-    // May be nullptr.
-    raw_ptr<ash::PolicyCertificateProvider> policy_certs_provider = nullptr;
-    // May be nullptr.
-    std::unique_ptr<chromeos::CertificateProvider>
-        extension_certificate_provider;
-    // Valid as long as the underlying Profile is valid. The implementation
-    // doesn't check for validity of the WeakPtr because the
-    // CertificateManagerModel has the same validity time frame.
-    base::WeakPtr<kcer::Kcer> kcer;
-#endif
-
-    Params();
-
-    Params(const Params&) = delete;
-    Params& operator=(const Params&) = delete;
-
-    Params(Params&& other);
-
-    ~Params();
-  };
-
-  // Map from the subject organization name to the list of certs from that
-  // organization.  If a cert does not have an organization name, the
-  // subject's CertPrincipal::GetDisplayName() value is used instead.
-  using OrgGroupingMap =
-      std::map<std::string, std::vector<std::unique_ptr<CertInfo>>>;
-
-  using CreationCallback =
-      base::OnceCallback<void(std::unique_ptr<CertificateManagerModel>)>;
-
-  class Observer {
-   public:
-    // Called to notify the view that the certificate list has been refreshed.
-    // TODO(mattm): do a more granular updating strategy?  Maybe retrieve new
-    // list of certs, diff against past list, and then notify of the changes?
-    virtual void CertificatesRefreshed() = 0;
-
-   protected:
-    virtual ~Observer() = default;
-  };
-
-  // Creates a CertificateManagerModel. The model will be passed to the callback
-  // when it is ready. The caller must ensure the model does not outlive the
-  // |browser_context|.
-  static void Create(content::BrowserContext* browser_context,
-                     Observer* observer,
-                     CreationCallback callback);
-
-  // Use |Create| instead to create a |CertificateManagerModel| for a
-  // |BrowserContext|.
-  CertificateManagerModel(std::unique_ptr<Params> params,
-                          Observer* observer,
-                          net::NSSCertDatabase* nss_cert_database);
-
-  CertificateManagerModel(const CertificateManagerModel&) = delete;
-  CertificateManagerModel& operator=(const CertificateManagerModel&) = delete;
-
-  ~CertificateManagerModel();
-
-  // Accessor for read-only access to the underlying NSSCertDatabase.
-  const net::NSSCertDatabase* cert_db() const { return cert_db_; }
-
-  // Trigger a refresh of the list of certs, unlock any slots if necessary.
-  // Following this call, the observer CertificatesRefreshed method will be
-  // called so the view can call FilterAndBuildOrgGroupingMap as necessary to
-  // refresh its tree views.
-  void Refresh();
-
-  // Fill |*out_org_grouping_map| with the certificates matching |filter_type|.
-  void FilterAndBuildOrgGroupingMap(net::CertType filter_type,
-                                    OrgGroupingMap* out_org_grouping_map) const;
-
-  // Import private keys and certificates from PKCS #12 encoded
-  // |data|, using the given |password|. If |is_extractable| is false,
-  // mark the private key as unextractable from the slot.
-  // Returns a net error code on failure or net::OK on success using the
-  // `callback`.
-  void ImportFromPKCS12(PK11SlotInfo* slot_info,
-                        const std::string& data,
-                        const std::u16string& password,
-                        bool is_extractable,
-                        base::OnceCallback<void(int net_result)> callback);
-
-  // Import user certificate from DER encoded |data|.
-  // Returns a net error code on failure.
-  int ImportUserCert(const std::string& data);
-
-  // Import CA certificates.
-  // Tries to import all the certificates given.  The root will be trusted
-  // according to |trust_bits|.  Any certificates that could not be imported
-  // will be listed in |not_imported|.
-  // |trust_bits| should be a bit field of TRUST* values from NSSCertDatabase.
-  // Returns false if there is an internal error, otherwise true is returned and
-  // |not_imported| should be checked for any certificates that were not
-  // imported.
-  bool ImportCACerts(const net::ScopedCERTCertificateList& certificates,
-                     net::NSSCertDatabase::TrustBits trust_bits,
-                     net::NSSCertDatabase::ImportCertFailureList* not_imported);
-
-  // Import server certificate.  The first cert should be the server cert.  Any
-  // additional certs should be intermediate/CA certs and will be imported but
-  // not given any trust.
-  // Any certificates that could not be imported will be listed in
-  // |not_imported|.
-  // |trust_bits| can be set to explicitly trust or distrust the certificate, or
-  // use TRUST_DEFAULT to inherit trust as normal.
-  // Returns false if there is an internal error, otherwise true is returned and
-  // |not_imported| should be checked for any certificates that were not
-  // imported.
-  bool ImportServerCert(
-      const net::ScopedCERTCertificateList& certificates,
-      net::NSSCertDatabase::TrustBits trust_bits,
-      net::NSSCertDatabase::ImportCertFailureList* not_imported);
-
-  // Set trust values for certificate.
-  // |trust_bits| should be a bit field of TRUST* values from NSSCertDatabase.
-  // Returns true on success or false on failure.
-  bool SetCertTrust(CERTCertificate* cert,
-                    net::CertType type,
-                    net::NSSCertDatabase::TrustBits trust_bits);
-
-  // Remove the cert from the cert database.
-  void RemoveFromDatabase(net::ScopedCERTCertificate cert,
-                          base::OnceCallback<void(bool /*success*/)> callback);
-
- private:
-  // Called when one of the |certs_sources_| has been updated. Will notify the
-  // |observer_| that the certificate list has been refreshed.
-  void OnCertsSourceUpdated();
-
-  // Finds the |CertsSource| which provided |cert|. Can return nullptr (e.g. if
-  // the cert has been deleted in the meantime).
-  CertsSource* FindCertsSourceForCert(CERTCertificate* cert);
-
-  // Methods used during initialization, see the comment at the top of the .cc
-  // file for details.
-  static void DidGetCertDBOnUIThread(
-      std::unique_ptr<Params> params,
-      CertificateManagerModel::Observer* observer,
-      CreationCallback callback,
-      net::NSSCertDatabase* cert_db);
-  static void DidGetCertDBOnIOThread(
-      std::unique_ptr<Params> params,
-      CertificateManagerModel::Observer* observer,
-      CreationCallback callback,
-      net::NSSCertDatabase* cert_db);
-  static void GetCertDBOnIOThread(std::unique_ptr<Params> params,
-                                  NssCertDatabaseGetter database_getter,
-                                  CertificateManagerModel::Observer* observer,
-                                  CreationCallback callback);
-
-  raw_ptr<net::NSSCertDatabase> cert_db_;
-#if BUILDFLAG(IS_CHROMEOS)
-  base::WeakPtr<kcer::Kcer> kcer_;
-#endif
-
-  // CertsSource instances providing certificates. The order matters - if a
-  // certificate is provided by more than one CertsSource, only the first one is
-  // accepted.
-  std::vector<std::unique_ptr<CertsSource>> certs_sources_;
-
-  bool hold_back_updates_ = false;
-
-  // The observer to notify when certificate list is refreshed.
-  raw_ptr<Observer> observer_;
-};
-
-#endif  // CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
diff --git a/chrome/browser/certificate_manager_model_ash_browsertest.cc b/chrome/browser/certificate_manager_model_ash_browsertest.cc
deleted file mode 100644
index 9bb9c0a..0000000
--- a/chrome/browser/certificate_manager_model_ash_browsertest.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2024 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/certificate_manager_model.h"
-
-#include <string>
-
-#include "base/files/file_util.h"
-#include "base/test/test_future.h"
-#include "base/threading/thread_restrictions.h"
-#include "chrome/browser/ash/login/test/logged_in_user_mixin.h"
-#include "chrome/browser/net/nss_service.h"
-#include "chrome/browser/net/nss_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/mixin_based_in_process_browser_test.h"
-#include "chromeos/constants/chromeos_features.h"
-#include "components/prefs/pref_service.h"
-#include "content/public/test/browser_test.h"
-#include "crypto/scoped_test_nss_db.h"
-#include "net/test/test_data_directory.h"
-
-// The correct password for the client.p12 file.
-const char16_t kPassword[] = u"12345";
-
-struct FakeObserver : CertificateManagerModel::Observer {
-  void CertificatesRefreshed() override {}
-};
-
-class CertificateManagerModelBrowserTestBase
-    : public MixinBasedInProcessBrowserTest {
- public:
-  void SetUpOnMainThread() override {
-    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
-    logged_in_user_mixin_.LogInUser();
-
-    base::test::TestFuture<std::unique_ptr<CertificateManagerModel>>
-        model_waiter;
-    CertificateManagerModel::Create(browser()->profile(), &fake_observer_,
-                                    model_waiter.GetCallback());
-    certificate_manager_model_ = model_waiter.Take();
-  }
-
-  void TearDownOnMainThread() override { certificate_manager_model_.reset(); }
-
-  std::string ReadTestFile(const std::string& file_name) {
-    base::ScopedAllowBlockingForTesting allow_blocking;
-    base::FilePath file_path =
-        net::GetTestCertsDirectory().AppendASCII(file_name);
-    std::string file_data;
-    if (!base::ReadFileToString(file_path, &file_data)) {
-      ADD_FAILURE() << "Couldn't read " << file_path;
-      return {};
-    }
-    return file_data;
-  }
-
-  const std::string& GetPkcs12() {
-    static const base::NoDestructor<std::string> pkcs12(
-        ReadTestFile("client.p12"));
-    return *pkcs12;
-  }
-
- protected:
-  ash::LoggedInUserMixin logged_in_user_mixin_{
-      &mixin_host_, /*test_base=*/this, embedded_test_server(),
-      ash::LoggedInUserMixin::LogInType::kConsumer};
-
-  FakeObserver fake_observer_;
-  base::test::ScopedFeatureList feature_list_;
-  std::unique_ptr<crypto::ScopedTestNSSDB> public_slot_ =
-      std::make_unique<crypto::ScopedTestNSSDB>();
-  std::unique_ptr<CertificateManagerModel> certificate_manager_model_;
-};
-
-class CertificateManagerModelEnablePkcs12DualWrite
-    : public CertificateManagerModelBrowserTestBase {
- public:
-  CertificateManagerModelEnablePkcs12DualWrite() {
-    feature_list_.InitAndEnableFeature(
-        chromeos::features::kEnablePkcs12ToChapsDualWrite);
-  }
-};
-
-// Test ImportFromPKCS12 with dual-write enabled.
-IN_PROC_BROWSER_TEST_F(CertificateManagerModelEnablePkcs12DualWrite,
-                       DualWriteIsEnabled) {
-  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-      prefs::kNssChapsDualWrittenCertsExist));
-
-  // Non-extractable certs should not be dual-written and should not set the
-  // related preference.
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        public_slot_->slot(), GetPkcs12(), kPassword,
-        /*is_extractable=*/false, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::OK);
-    EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-        prefs::kNssChapsDualWrittenCertsExist));
-  }
-
-  // Extractable certs should be dual-written and should set the related
-  // preference.
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        public_slot_->slot(), GetPkcs12(), kPassword,
-        /*is_extractable=*/true, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::OK);
-    EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean(
-        prefs::kNssChapsDualWrittenCertsExist));
-  }
-}
-
-class CertificateManagerModelDisablePkcs12DualWrite
-    : public CertificateManagerModelBrowserTestBase {
- public:
-  CertificateManagerModelDisablePkcs12DualWrite() {
-    feature_list_.InitAndDisableFeature(
-        chromeos::features::kEnablePkcs12ToChapsDualWrite);
-  }
-};
-
-// Test ImportFromPKCS12 with dual-write disabled. Everything should work as
-// usual, kNssChapsDualWrittenCertsExist preference should not be set for all
-// cases.
-IN_PROC_BROWSER_TEST_F(CertificateManagerModelDisablePkcs12DualWrite,
-                       DualWriteIsDisabled) {
-  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-      prefs::kNssChapsDualWrittenCertsExist));
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        public_slot_->slot(), GetPkcs12(), kPassword,
-        /*is_extractable=*/false, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::OK);
-    EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-        prefs::kNssChapsDualWrittenCertsExist));
-  }
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        public_slot_->slot(), GetPkcs12(), kPassword,
-        /*is_extractable=*/true, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::OK);
-    EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-        prefs::kNssChapsDualWrittenCertsExist));
-  }
-}
diff --git a/chrome/browser/certificate_manager_model_unittest.cc b/chrome/browser/certificate_manager_model_unittest.cc
deleted file mode 100644
index a51142c..0000000
--- a/chrome/browser/certificate_manager_model_unittest.cc
+++ /dev/null
@@ -1,732 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/certificate_manager_model.h"
-
-#include "base/memory/raw_ptr.h"
-#include "base/observer_list.h"
-#include "base/run_loop.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/test_future.h"
-#include "build/build_config.h"
-#include "content/public/test/browser_task_environment.h"
-#include "crypto/scoped_test_nss_db.h"
-#include "net/cert/nss_cert_database.h"
-#include "net/cert/scoped_nss_types.h"
-#include "net/cert/x509_util_nss.h"
-#include "net/ssl/client_cert_identity_test_util.h"
-#include "net/test/cert_builder.h"
-#include "net/test/cert_test_util.h"
-#include "net/test/test_data_directory.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#if BUILDFLAG(IS_CHROMEOS)
-#include "base/test/scoped_feature_list.h"
-#include "chrome/browser/certificate_provider/certificate_provider.h"
-#include "chromeos/ash/components/kcer/extra_instances.h"
-#include "chromeos/ash/components/network/policy_certificate_provider.h"
-#include "chromeos/components/onc/certificate_scope.h"
-#include "chromeos/constants/chromeos_features.h"
-#endif
-
-namespace {
-
-// A fake CertificateManagerModel::Observer that has the ability to execute a
-// OnceClosure passed to it when |CertificatesRefreshed| is called.
-class FakeObserver : public CertificateManagerModel::Observer {
- public:
-  void CertificatesRefreshed() override {
-    if (!run_on_refresh_.is_null())
-      std::move(run_on_refresh_).Run();
-  }
-
-  // Execute |closure| on the next |CertificatesRefreshed| invocation.
-  void RunOnNextRefresh(base::OnceClosure closure) {
-    run_on_refresh_ = std::move(closure);
-  }
-
- private:
-  base::OnceClosure run_on_refresh_;
-};
-
-// Looks up a |CertInfo| in |org_grouping_map| corresponding to |cert|. Returns
-// nullptr if no such |CertInfo| was found.
-CertificateManagerModel::CertInfo* GetCertInfoFromOrgGroupingMap(
-    const CertificateManagerModel::OrgGroupingMap& org_grouping_map,
-    CERTCertificate* cert) {
-  for (const auto& org_and_cert_info_list : org_grouping_map) {
-    for (const auto& cert_info : org_and_cert_info_list.second) {
-      if (net::x509_util::IsSameCertificate(cert_info->cert(), cert))
-        return cert_info.get();
-    }
-  }
-  return nullptr;
-}
-
-}  // namespace
-
-class CertificateManagerModelTest : public testing::Test {
- public:
-  CertificateManagerModelTest() = default;
-
-  CertificateManagerModelTest(const CertificateManagerModelTest&) = delete;
-  CertificateManagerModelTest& operator=(const CertificateManagerModelTest&) =
-      delete;
-
- protected:
-  void SetUp() override {
-    ASSERT_TRUE(test_nssdb_.is_open());
-
-    nss_cert_db_ = std::make_unique<net::NSSCertDatabase>(
-        crypto::ScopedPK11Slot(
-            PK11_ReferenceSlot(test_nssdb_.slot())) /* public slot */,
-        crypto::ScopedPK11Slot(
-            PK11_ReferenceSlot(test_nssdb_.slot())) /* private slot */);
-
-    fake_observer_ = std::make_unique<FakeObserver>();
-    certificate_manager_model_ = std::make_unique<CertificateManagerModel>(
-        GetCertificateManagerModelParams(), fake_observer_.get(),
-        nss_cert_db_.get());
-  }
-
-  void TearDown() override {
-    certificate_manager_model_.reset();
-    nss_cert_db_.reset();
-  }
-
-  // Provides the platform-specific |Params| (containing policy/extension
-  // certificate provides on Chrome OS).
-  virtual std::unique_ptr<CertificateManagerModel::Params>
-  GetCertificateManagerModelParams() {
-    return std::make_unique<CertificateManagerModel::Params>();
-  }
-
- protected:
-  // Invoke an explicit Refresh if the refresh is triggered and wait until the
-  // observer has been notified.
-  void WaitForRefresh(bool trigger_refresh) {
-    base::RunLoop run_loop;
-    fake_observer_->RunOnNextRefresh(run_loop.QuitClosure());
-    if (trigger_refresh) {
-      certificate_manager_model_->Refresh();
-    }
-    run_loop.Run();
-  }
-
-  content::BrowserTaskEnvironment task_environment_;
-  crypto::ScopedTestNSSDB test_nssdb_;
-  std::unique_ptr<net::NSSCertDatabase> nss_cert_db_;
-  std::unique_ptr<FakeObserver> fake_observer_;
-  std::unique_ptr<CertificateManagerModel> certificate_manager_model_;
-};
-
-// CertificateManagerModel correctly lists CA certificates from the platform NSS
-// Database.
-TEST_F(CertificateManagerModelTest, ListsCertsFromPlatform) {
-  net::CertificateList orig_certs = CreateCertificateListFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem",
-      net::X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(1U, orig_certs.size());
-
-  net::CertBuilder cert_builder(orig_certs[0]->cert_buffer(), nullptr);
-  scoped_refptr<net::X509Certificate> x509_cert =
-      cert_builder.GetX509Certificate();
-
-  net::ScopedCERTCertificate cert =
-      net::x509_util::CreateCERTCertificateFromX509Certificate(x509_cert.get());
-  std::string cert_subject_name = x509_cert->subject().GetDisplayName();
-
-  ASSERT_EQ(SECSuccess,
-            PK11_ImportCert(test_nssdb_.slot(), cert.get(), CK_INVALID_HANDLE,
-                            "cert", PR_FALSE /* includeTrust (unused) */));
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, cert.get());
-    ASSERT_TRUE(cert_info);
-
-    EXPECT_EQ(net::CertType::CA_CERT, cert_info->type());
-    EXPECT_EQ(base::UTF8ToUTF16(cert_subject_name), cert_info->name());
-    EXPECT_TRUE(cert_info->can_be_deleted());
-    // This platform cert is untrusted because it is self-signed and has no
-    // trust bits.
-    EXPECT_TRUE(cert_info->untrusted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPlatform,
-              cert_info->source());
-    EXPECT_FALSE(cert_info->web_trust_anchor());
-    EXPECT_FALSE(cert_info->hardware_backed());
-  }
-
-  certificate_manager_model_->SetCertTrust(cert.get(), net::CertType::CA_CERT,
-                                           net::NSSCertDatabase::TRUSTED_SSL);
-  // Wait for refresh without triggering because observer should be notified by
-  // net::CertDatabase and refresh automatically.
-  WaitForRefresh(false /*tigger_for_refresh*/);
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, cert.get());
-    ASSERT_TRUE(cert_info);
-
-    EXPECT_FALSE(cert_info->untrusted());
-    EXPECT_TRUE(cert_info->web_trust_anchor());
-  }
-}
-
-// CertificateManagerModel correctly lists client certificates from the platform
-// NSS Database.
-TEST_F(CertificateManagerModelTest, ListsClientCertsFromPlatform) {
-  net::ScopedCERTCertificate platform_client_cert;
-  net::ImportClientCertAndKeyFromFile(
-      net::GetTestCertsDirectory(), "client_1.pem", "client_1.pk8",
-      test_nssdb_.slot(), &platform_client_cert);
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-      net::CertType::USER_CERT, &org_grouping_map);
-  CertificateManagerModel::CertInfo* platform_cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map,
-                                    platform_client_cert.get());
-  ASSERT_TRUE(platform_cert_info);
-
-  EXPECT_EQ(net::CertType::USER_CERT, platform_cert_info->type());
-  EXPECT_EQ(u"Client Cert A", platform_cert_info->name());
-  EXPECT_TRUE(platform_cert_info->can_be_deleted());
-  EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPlatform,
-            platform_cert_info->source());
-  EXPECT_FALSE(platform_cert_info->web_trust_anchor());
-  EXPECT_FALSE(platform_cert_info->hardware_backed());
-}
-
-#if BUILDFLAG(IS_CHROMEOS)
-namespace {
-
-class FakePolicyCertificateProvider : public ash::PolicyCertificateProvider {
- public:
-  void AddPolicyProvidedCertsObserver(Observer* observer) override {
-    observer_list_.AddObserver(observer);
-  }
-
-  void RemovePolicyProvidedCertsObserver(Observer* observer) override {
-    observer_list_.RemoveObserver(observer);
-  }
-
-  net::CertificateList GetAllServerAndAuthorityCertificates(
-      const chromeos::onc::CertificateScope& scope) const override {
-    // The CertificateManagerModel only retrieves profile-wide certificates.
-    EXPECT_EQ(chromeos::onc::CertificateScope::Default(), scope);
-
-    net::CertificateList merged;
-    merged.insert(merged.end(), web_trusted_certs_.begin(),
-                  web_trusted_certs_.end());
-    merged.insert(merged.end(), not_web_trusted_certs_.begin(),
-                  not_web_trusted_certs_.end());
-    return merged;
-  }
-
-  net::CertificateList GetAllAuthorityCertificates(
-      const chromeos::onc::CertificateScope& scope) const override {
-    // This function is not called by CertificateManagerModel.
-    NOTREACHED();
-  }
-
-  net::CertificateList GetWebTrustedCertificates(
-      const chromeos::onc::CertificateScope& scope) const override {
-    // The CertificateManagerModel only retrieves profile-wide certificates.
-    EXPECT_EQ(chromeos::onc::CertificateScope::Default(), scope);
-
-    return web_trusted_certs_;
-  }
-
-  net::CertificateList GetCertificatesWithoutWebTrust(
-      const chromeos::onc::CertificateScope& scope) const override {
-    // The CertificateManagerModel only retrieves profile-wide certificates.
-    EXPECT_EQ(chromeos::onc::CertificateScope::Default(), scope);
-
-    return not_web_trusted_certs_;
-  }
-
-  const std::set<std::string>& GetExtensionIdsWithPolicyCertificates()
-      const override {
-    // This function is not called by CertificateManagerModel.
-    NOTREACHED();
-  }
-
-  void SetPolicyProvidedCertificates(
-      const net::CertificateList& web_trusted_certs,
-      const net::CertificateList& not_web_trusted_certs) {
-    web_trusted_certs_ = web_trusted_certs;
-    not_web_trusted_certs_ = not_web_trusted_certs;
-  }
-
-  void NotifyObservers() {
-    for (auto& observer : observer_list_)
-      observer.OnPolicyProvidedCertsChanged();
-  }
-
- private:
-  base::ObserverList<PolicyCertificateProvider::Observer,
-                     true /* check_empty */>::Unchecked observer_list_;
-  net::CertificateList web_trusted_certs_;
-  net::CertificateList not_web_trusted_certs_;
-  const std::set<std::string> kNoExtensions = {};
-};
-
-class FakeExtensionCertificateProvider : public chromeos::CertificateProvider {
- public:
-  FakeExtensionCertificateProvider(
-      const net::CertificateList* extension_client_certificates,
-      const bool* extensions_hang)
-      : extension_client_certificates_(extension_client_certificates),
-        extensions_hang_(extensions_hang) {}
-
-  void GetCertificates(
-      base::OnceCallback<void(net::ClientCertIdentityList)> callback) override {
-    if (*extensions_hang_)
-      return;
-
-    std::move(callback).Run(FakeClientCertIdentityListFromCertificateList(
-        *extension_client_certificates_));
-  }
-
- private:
-  raw_ptr<const net::CertificateList> extension_client_certificates_;
-
-  // If *|extensions_hang| is true, the |FakeExtensionCertificateProvider| hangs
-  // - it never calls the callbacks passed to |GetCertificates|.
-  raw_ptr<const bool> extensions_hang_;
-};
-
-// Looks up a |CertInfo| in |org_grouping_map| corresponding to |cert|. Returns
-// nullptr if no such |CertInfo| was found.
-CertificateManagerModel::CertInfo* GetCertInfoFromOrgGroupingMap(
-    const CertificateManagerModel::OrgGroupingMap& org_grouping_map,
-    const net::X509Certificate* cert) {
-  for (const auto& org_and_cert_info_list : org_grouping_map) {
-    for (const auto& cert_info : org_and_cert_info_list.second) {
-      if (net::x509_util::IsSameCertificate(cert_info->cert(), cert))
-        return cert_info.get();
-    }
-  }
-  return nullptr;
-}
-
-}  // namespace
-
-class CertificateManagerModelChromeOSTest : public CertificateManagerModelTest {
- protected:
-  std::unique_ptr<CertificateManagerModel::Params>
-  GetCertificateManagerModelParams() override {
-    auto params = std::make_unique<CertificateManagerModel::Params>();
-    params->policy_certs_provider = &policy_certs_provider_;
-    params->extension_certificate_provider =
-        std::make_unique<FakeExtensionCertificateProvider>(
-            &extension_client_certs_, &extensions_hang_);
-    params->kcer = kcer::ExtraInstances::GetEmptyKcer();
-    return params;
-  }
-
-  void NotifyPolicyObserversAndWaitForRefresh() {
-    base::RunLoop run_loop;
-    fake_observer_->RunOnNextRefresh(run_loop.QuitClosure());
-    policy_certs_provider_.NotifyObservers();
-    run_loop.Run();
-  }
-
-  // Provider for policy certificates. In a non-test environment, this would
-  // usually be the UserNetworkConfigurationUpdater.
-  FakePolicyCertificateProvider policy_certs_provider_;
-
-  // List of certificates that will be returned from the
-  // FakeExtensionCertificateProvider.
-  net::CertificateList extension_client_certs_;
-  // If true, the FakeExtensionCertificateProvider hangs.
-  bool extensions_hang_ = false;
-};
-
-// CertificateManagerModel correctly lists policy-provided certificates with web
-// trust.
-TEST_F(CertificateManagerModelChromeOSTest, ListsWebTrustedCertsFromPolicy) {
-  scoped_refptr<net::X509Certificate> cert = net::ImportCertFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem");
-  ASSERT_TRUE(cert.get());
-  policy_certs_provider_.SetPolicyProvidedCertificates({cert}, {});
-
-  NotifyPolicyObserversAndWaitForRefresh();
-
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-      net::CertType::CA_CERT, &org_grouping_map);
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map, cert.get());
-  ASSERT_TRUE(cert_info);
-
-  EXPECT_EQ(net::CertType::CA_CERT, cert_info->type());
-  EXPECT_EQ(u"pywebsocket", cert_info->name());
-  EXPECT_FALSE(cert_info->can_be_deleted());
-  EXPECT_FALSE(cert_info->untrusted());
-  EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPolicy,
-            cert_info->source());
-  EXPECT_TRUE(cert_info->web_trust_anchor());
-  EXPECT_FALSE(cert_info->hardware_backed());
-}
-
-// CertificateManagerModel correctly lists policy-provided certificates without
-// web trust.
-TEST_F(CertificateManagerModelChromeOSTest, ListsNotWebTrustedCertsFromPolicy) {
-  scoped_refptr<net::X509Certificate> cert = net::ImportCertFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem");
-  ASSERT_TRUE(cert.get());
-  policy_certs_provider_.SetPolicyProvidedCertificates({}, {cert});
-
-  NotifyPolicyObserversAndWaitForRefresh();
-
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-      net::CertType::CA_CERT, &org_grouping_map);
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map, cert.get());
-  ASSERT_TRUE(cert_info);
-
-  EXPECT_EQ(net::CertType::CA_CERT, cert_info->type());
-  EXPECT_EQ(u"pywebsocket", cert_info->name());
-  EXPECT_FALSE(cert_info->can_be_deleted());
-  EXPECT_FALSE(cert_info->untrusted());
-  EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPolicy,
-            cert_info->source());
-  EXPECT_FALSE(cert_info->web_trust_anchor());
-  EXPECT_FALSE(cert_info->hardware_backed());
-}
-
-// CertificateManagerModel correctly lists CA certificates that are in the
-// platform NSS database and provided by policy with web trust. The
-// policy-provided certificate hides the platform certificate in this case.
-TEST_F(CertificateManagerModelChromeOSTest,
-       WebTrustedPolicyCertsWinOverPlatformCerts) {
-  net::ScopedCERTCertificateList certs = CreateCERTCertificateListFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem",
-      net::X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(1U, certs.size());
-  CERTCertificate* platform_cert = certs[0].get();
-  ASSERT_EQ(SECSuccess, PK11_ImportCert(test_nssdb_.slot(), platform_cert,
-                                        CK_INVALID_HANDLE, "cert",
-                                        PR_FALSE /* includeTrust (unused) */));
-
-  scoped_refptr<net::X509Certificate> policy_cert = net::ImportCertFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem");
-  ASSERT_TRUE(policy_cert.get());
-  policy_certs_provider_.SetPolicyProvidedCertificates({policy_cert}, {});
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* platform_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, platform_cert);
-    ASSERT_TRUE(platform_cert_info);
-    CertificateManagerModel::CertInfo* policy_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, policy_cert.get());
-    ASSERT_TRUE(policy_cert_info);
-
-    EXPECT_EQ(platform_cert_info, policy_cert_info);
-
-    EXPECT_EQ(net::CertType::CA_CERT, policy_cert_info->type());
-    EXPECT_EQ(u"pywebsocket", policy_cert_info->name());
-    EXPECT_FALSE(policy_cert_info->can_be_deleted());
-    EXPECT_FALSE(policy_cert_info->untrusted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPolicy,
-              policy_cert_info->source());
-    EXPECT_TRUE(policy_cert_info->web_trust_anchor());
-    EXPECT_FALSE(policy_cert_info->hardware_backed());
-  }
-
-  // Remove the cert from policy-provided certs again. The platform certificate
-  // should be visible afterwards.
-  policy_certs_provider_.SetPolicyProvidedCertificates({}, {});
-  NotifyPolicyObserversAndWaitForRefresh();
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* platform_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, platform_cert);
-    ASSERT_TRUE(platform_cert_info);
-
-    EXPECT_EQ(net::CertType::CA_CERT, platform_cert_info->type());
-    EXPECT_EQ(u"pywebsocket", platform_cert_info->name());
-    EXPECT_TRUE(platform_cert_info->can_be_deleted());
-    EXPECT_TRUE(platform_cert_info->untrusted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPlatform,
-              platform_cert_info->source());
-    EXPECT_FALSE(platform_cert_info->web_trust_anchor());
-    EXPECT_FALSE(platform_cert_info->hardware_backed());
-  }
-}
-
-// CertificateManagerModel correctly lists CA certificates that are in the
-// platform NSS database and provided by policy without web trust. The platform
-// certificate hides the policy-provided certificate in this case.
-TEST_F(CertificateManagerModelChromeOSTest,
-       PlatformCertsWinOverNotWebTrustedCerts) {
-  net::ScopedCERTCertificateList certs = CreateCERTCertificateListFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem",
-      net::X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(1U, certs.size());
-  CERTCertificate* platform_cert = certs[0].get();
-  ASSERT_EQ(SECSuccess, PK11_ImportCert(test_nssdb_.slot(), platform_cert,
-                                        CK_INVALID_HANDLE, "cert",
-                                        PR_FALSE /* includeTrust (unused) */));
-
-  scoped_refptr<net::X509Certificate> policy_cert = net::ImportCertFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem");
-  ASSERT_TRUE(policy_cert.get());
-  policy_certs_provider_.SetPolicyProvidedCertificates({}, {policy_cert});
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* platform_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, platform_cert);
-    ASSERT_TRUE(platform_cert_info);
-    CertificateManagerModel::CertInfo* policy_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, policy_cert.get());
-    ASSERT_TRUE(policy_cert_info);
-
-    EXPECT_EQ(platform_cert_info, policy_cert_info);
-
-    EXPECT_EQ(net::CertType::CA_CERT, platform_cert_info->type());
-    EXPECT_EQ(u"pywebsocket", platform_cert_info->name());
-    EXPECT_TRUE(platform_cert_info->can_be_deleted());
-    EXPECT_TRUE(platform_cert_info->untrusted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPlatform,
-              platform_cert_info->source());
-    EXPECT_FALSE(platform_cert_info->web_trust_anchor());
-    EXPECT_FALSE(platform_cert_info->hardware_backed());
-  }
-
-  // Remove the certificate from the platform NSS database. The policy-provided
-  // certificate should be visible afterwards.
-  base::RunLoop run_loop;
-  fake_observer_->RunOnNextRefresh(run_loop.QuitClosure());
-  base::test::TestFuture<bool> remove_result;
-  certificate_manager_model_->RemoveFromDatabase(
-      net::x509_util::DupCERTCertificate(platform_cert),
-      remove_result.GetCallback());
-  EXPECT_TRUE(remove_result.Get());
-  run_loop.Run();
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::CA_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* policy_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, policy_cert.get());
-    ASSERT_TRUE(policy_cert_info);
-
-    EXPECT_EQ(net::CertType::CA_CERT, policy_cert_info->type());
-    EXPECT_EQ(u"pywebsocket", policy_cert_info->name());
-    EXPECT_FALSE(policy_cert_info->can_be_deleted());
-    EXPECT_FALSE(policy_cert_info->untrusted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPolicy,
-              policy_cert_info->source());
-    EXPECT_FALSE(policy_cert_info->web_trust_anchor());
-    EXPECT_FALSE(policy_cert_info->hardware_backed());
-  }
-}
-
-// When the Extension CertificateProvider hangs (e.g. because an extension is
-// not responding), policy and platform certificates are still listed.
-TEST_F(CertificateManagerModelChromeOSTest,
-       PlatformAndPolicyCertsListedWhenExtensionsHang) {
-  extensions_hang_ = true;
-
-  net::ScopedCERTCertificateList certs = CreateCERTCertificateListFromFile(
-      net::GetTestCertsDirectory(), "websocket_cacert.pem",
-      net::X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(1U, certs.size());
-  CERTCertificate* platform_cert = certs[0].get();
-  ASSERT_EQ(SECSuccess, PK11_ImportCert(test_nssdb_.slot(), platform_cert,
-                                        CK_INVALID_HANDLE, "cert",
-                                        PR_FALSE /* includeTrust (unused) */));
-
-  scoped_refptr<net::X509Certificate> policy_cert =
-      net::ImportCertFromFile(net::GetTestCertsDirectory(), "root_ca_cert.pem");
-  ASSERT_TRUE(policy_cert.get());
-  policy_certs_provider_.SetPolicyProvidedCertificates({policy_cert}, {});
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-      net::CertType::CA_CERT, &org_grouping_map);
-  CertificateManagerModel::CertInfo* platform_cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map, platform_cert);
-  ASSERT_TRUE(platform_cert_info);
-  CertificateManagerModel::CertInfo* policy_cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map, policy_cert.get());
-  ASSERT_TRUE(policy_cert_info);
-
-  EXPECT_NE(platform_cert_info, policy_cert_info);
-}
-
-// CertificateManagerModel lists client certificates provided by extensions.
-TEST_F(CertificateManagerModelChromeOSTest, ListsExtensionCerts) {
-  scoped_refptr<net::X509Certificate> extension_cert =
-      net::ImportCertFromFile(net::GetTestCertsDirectory(), "client_1.pem");
-  ASSERT_TRUE(extension_cert.get());
-  extension_client_certs_.push_back(extension_cert);
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-      net::CertType::USER_CERT, &org_grouping_map);
-  CertificateManagerModel::CertInfo* extension_cert_info =
-      GetCertInfoFromOrgGroupingMap(org_grouping_map, extension_cert.get());
-  ASSERT_TRUE(extension_cert_info);
-
-  EXPECT_EQ(net::CertType::USER_CERT, extension_cert_info->type());
-  EXPECT_EQ(u"Client Cert A (extension provided)", extension_cert_info->name());
-  EXPECT_FALSE(extension_cert_info->can_be_deleted());
-  EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kExtension,
-            extension_cert_info->source());
-  EXPECT_FALSE(extension_cert_info->web_trust_anchor());
-  EXPECT_FALSE(extension_cert_info->hardware_backed());
-}
-
-TEST_F(CertificateManagerModelChromeOSTest,
-       PlatformCertsWinOverExtensionCerts) {
-  net::ScopedCERTCertificate platform_client_cert;
-  net::ImportClientCertAndKeyFromFile(
-      net::GetTestCertsDirectory(), "client_1.pem", "client_1.pk8",
-      test_nssdb_.slot(), &platform_client_cert);
-
-  scoped_refptr<net::X509Certificate> extension_cert =
-      net::ImportCertFromFile(net::GetTestCertsDirectory(), "client_1.pem");
-  ASSERT_TRUE(extension_cert.get());
-  extension_client_certs_.push_back(extension_cert);
-
-  WaitForRefresh(true /*tigger_for_refresh*/);
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::USER_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* platform_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map,
-                                      platform_client_cert.get());
-    ASSERT_TRUE(platform_cert_info);
-    CertificateManagerModel::CertInfo* extension_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, extension_cert.get());
-    ASSERT_TRUE(extension_cert_info);
-
-    EXPECT_EQ(platform_cert_info, extension_cert_info);
-
-    EXPECT_EQ(net::CertType::USER_CERT, platform_cert_info->type());
-    EXPECT_EQ(u"Client Cert A", platform_cert_info->name());
-    EXPECT_TRUE(platform_cert_info->can_be_deleted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kPlatform,
-              platform_cert_info->source());
-    EXPECT_FALSE(platform_cert_info->web_trust_anchor());
-    EXPECT_FALSE(platform_cert_info->hardware_backed());
-  }
-
-  // Remove the platform client certificate. The extension-provided client
-  // certificate should be visible afterwards.
-  base::RunLoop run_loop;
-  fake_observer_->RunOnNextRefresh(run_loop.QuitClosure());
-  base::test::TestFuture<bool> remove_result;
-  certificate_manager_model_->RemoveFromDatabase(
-      std::move(platform_client_cert), remove_result.GetCallback());
-  EXPECT_TRUE(remove_result.Get());
-  run_loop.Run();
-
-  {
-    CertificateManagerModel::OrgGroupingMap org_grouping_map;
-    certificate_manager_model_->FilterAndBuildOrgGroupingMap(
-        net::CertType::USER_CERT, &org_grouping_map);
-    CertificateManagerModel::CertInfo* extension_cert_info =
-        GetCertInfoFromOrgGroupingMap(org_grouping_map, extension_cert.get());
-    ASSERT_TRUE(extension_cert_info);
-
-    EXPECT_EQ(net::CertType::USER_CERT, extension_cert_info->type());
-    EXPECT_EQ(u"Client Cert A (extension provided)",
-              extension_cert_info->name());
-    EXPECT_FALSE(extension_cert_info->can_be_deleted());
-    EXPECT_EQ(CertificateManagerModel::CertInfo::Source::kExtension,
-              extension_cert_info->source());
-    EXPECT_FALSE(extension_cert_info->web_trust_anchor());
-    EXPECT_FALSE(extension_cert_info->hardware_backed());
-  }
-}
-
-// Test that CertificateManagerModel handles PKCS#12 import correctly.
-// The test doesn't simulate a valid certificate, actual handling of PKCS#12
-// data is covered by the tests for NSSCertDatabase and/or Kcer, but it tests
-// that a meaningful result is returned to the caller.
-// TODO(miersh): When kEnablePkcs12ToChapsDualWrite is enabled and
-// is_extractable is true, PKCS#12 data is imported both into NSS and Kcer. That
-// is difficult to verify at the moment. Soon UMA counters should be added and
-// can be both tested here and used for the verification. And much later the
-// import into NSS will be removed and the result code will come from Kcer.
-TEST_F(CertificateManagerModelChromeOSTest, ImportFromPKCS12) {
-  std::string kInvalidPkcs12Data = "111";
-  std::u16string kPassword = u"222";
-
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndDisableFeature(
-      chromeos::features::kEnablePkcs12ToChapsDualWrite);
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        test_nssdb_.slot(), kInvalidPkcs12Data, kPassword,
-        /*is_extractable=*/false, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::ERR_PKCS12_IMPORT_INVALID_FILE);
-  }
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        test_nssdb_.slot(), kInvalidPkcs12Data, kPassword,
-        /*is_extractable=*/true, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::ERR_PKCS12_IMPORT_INVALID_FILE);
-  }
-
-  feature_list.Reset();
-  feature_list.InitAndEnableFeature(
-      chromeos::features::kEnablePkcs12ToChapsDualWrite);
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        test_nssdb_.slot(), kInvalidPkcs12Data, kPassword,
-        /*is_extractable=*/false, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::ERR_PKCS12_IMPORT_INVALID_FILE);
-  }
-
-  {
-    base::test::TestFuture<int> import_waiter;
-    certificate_manager_model_->ImportFromPKCS12(
-        test_nssdb_.slot(), kInvalidPkcs12Data, kPassword,
-        /*is_extractable=*/true, import_waiter.GetCallback());
-    EXPECT_EQ(import_waiter.Get(), net::ERR_PKCS12_IMPORT_INVALID_FILE);
-  }
-}
-
-#endif  // BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc
index 52795b7..8b1432b 100644
--- a/chrome/browser/chrome_browser_interface_binders_webui.cc
+++ b/chrome/browser/chrome_browser_interface_binders_webui.cc
@@ -136,7 +136,7 @@
 #include "components/search/ntp_features.h"
 #include "ui/webui/resources/cr_components/color_change_listener/color_change_listener.mojom.h"
 #include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h"
-#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
+#include "ui/webui/resources/cr_components/help_bubble/custom_help_bubble.mojom.h"
 #include "ui/webui/resources/cr_components/history/history.mojom.h"
 #include "ui/webui/resources/cr_components/history_clusters/history_clusters.mojom.h"
 #include "ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom.h"
@@ -371,6 +371,10 @@
 #include "chrome/browser/ui/webui/reset_password/reset_password_ui.h"
 #endif  // BUILDFLAG(FULL_SAFE_BROWSING)
 
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h"
+#endif
+
 namespace chrome::internal {
 
 using content::RegisterWebUIControllerInterfaceBinder;
@@ -1257,6 +1261,15 @@
         ash::graduation::GraduationUI>(map);
   }
 #endif  // BUILDFLAG(IS_CHROMEOS)
+
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+  RegisterWebUIControllerInterfaceBinder<
+      zero_state_promo::mojom::PageHandlerFactory,
+      extensions::ZeroStatePromoController>(map);
+  RegisterWebUIControllerInterfaceBinder<
+      custom_help_bubble::mojom::CustomHelpBubbleHandlerFactory,
+      extensions::ZeroStatePromoController>(map);
+#endif
 }
 
 void PopulateChromeWebUIFrameInterfaceBrokers(
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc
index 542c89f3b..a3f1e1c 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.cc
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -1875,7 +1875,7 @@
 
   base::Value::Dict flexible_layout_dict;
   flexible_layout_dict.Set(
-      "verticalalDrawerEnabled",
+      "verticalDrawerEnabled",
       base::FeatureList::IsEnabled(::features::kDevToolsVerticalDrawer));
   response_dict.Set("devToolsFlexibleLayout", std::move(flexible_layout_dict));
 
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index ead15439..24ca56d 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -6611,6 +6611,14 @@
     "expiry_milestone": 133
   },
   {
+    "name": "new-content-for-checkerboarded-scrolls",
+    "owners": [
+      "gastonr@microsoft.com",
+      "gerchiko@microsoft.com"
+    ],
+    "expiry_milestone": 150
+  },
+  {
     "name": "new-etc1-encoder",
     "owners": [
       "cros-virt-devices-guests@google.com",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index ec6bc3c..e6b6fad 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -122,6 +122,13 @@
     "If enabled, allows Chrome to integrate with the Android App Search "
     "directly without using internal library.";
 
+const char kNewContentForCheckerboardedScrollsName[] =
+    "Change scrolling scheduling to reduce checkerboarding";
+const char kNewContentForCheckerboardedScrollsDescription[] =
+    "If enabled, scrolling that would generate blank frames will now "
+    "prioritize the new content over scrolling with the intention of "
+    "decreasing the amount of checkerboarded frames.";
+
 #if BUILDFLAG(IS_ANDROID)
 const char kNewTabPageCustomizationName[] = "Customize the new tab page";
 const char kNewTabPageCustomizationDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 299b440..109e1f42 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -896,6 +896,9 @@
 extern const char kBiometricAuthIdentityCheckDescription[];
 #endif  // BUILDFLAG(IS_ANDROID)
 
+extern const char kNewContentForCheckerboardedScrollsName[];
+extern const char kNewContentForCheckerboardedScrollsDescription[];
+
 extern const char kNewMacNotificationAPIName[];
 extern const char kNewMacNotificationAPIDescription[];
 
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index d36f434..ec0b309 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -1229,7 +1229,7 @@
 
 BASE_FEATURE(kTabStripContextMenuAndroid,
              "TabStripContextMenuAndroid",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kTabStripDensityChangeAndroid,
              "TabStripDensityChangeAndroid",
diff --git a/chrome/browser/glic/host/glic.mojom b/chrome/browser/glic/host/glic.mojom
index 303ea62..c945994 100644
--- a/chrome/browser/glic/host/glic.mojom
+++ b/chrome/browser/glic/host/glic.mojom
@@ -280,7 +280,7 @@
 // Note: This must be kept in sync with the corresponding enum (same name) in
 // glic_api.ts. The enums are also recorded as histograms when they are
 // reported.
-// Next version: 7
+// Next version: 8
 // LINT.IfChange(ScrollToErrorReason)
 [Stable, Extensible]
 enum ScrollToErrorReason {
@@ -313,6 +313,9 @@
 
   // Page context access is disabled.
   [MinVersion=6] kTabContextPermissionDisabled,
+
+  // The web client drops the highlight.
+  [MinVersion=7] kDroppedByWebClient,
 };
 // LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:GlicScrollToErrorReason)
 
@@ -490,10 +493,15 @@
   // Called when the user rates a response.
   OnResponseRated(bool positive);
 
-  // Scrolls to and (optionally) highlights content specified by `params`.
-  // Returns an error reason if the scroll fails, or null otherwise.
+  // Scrolls to and (optionally) highlights content specified by `params`. Only
+  // one highlight is active at a time. Returns an error reason if the scroll
+  // fails, or null otherwise.
   ScrollTo(ScrollToParams params) => (ScrollToErrorReason? error_reason);
 
+  // Drops the content highlight from ScrollTo(). No effects if no contents are
+  // highlighted.
+  DropScrollToHighlight();
+
   // Enrolls Chrome in the synthetic experiment group specified by
   // trial_name.group_name. Enrollment will start when the API is called and end
   // when Chrome closes.
@@ -509,7 +517,6 @@
   // Returns zero-state suggestions from the currently active tab.
   GetZeroStateSuggestionsForFocusedTab(bool? is_first_run)
       => (ZeroStateSuggestions? suggestions);
-
 };
 
 // Data sent from the browser to the web client with panel opening information.
diff --git a/chrome/browser/glic/host/glic_annotation_manager.cc b/chrome/browser/glic/host/glic_annotation_manager.cc
index 0b968b36..1a7197b 100644
--- a/chrome/browser/glic/host/glic_annotation_manager.cc
+++ b/chrome/browser/glic/host/glic_annotation_manager.cc
@@ -61,7 +61,8 @@
     mojom::WebClientHandler::ScrollToCallback callback) {
   CHECK(base::FeatureList::IsEnabled(features::kGlicScrollTo));
   if (annotation_task_ && annotation_task_->IsRunning()) {
-    annotation_task_->FailTask(mojom::ScrollToErrorReason::kNewerScrollToCall);
+    annotation_task_->FailTaskOrDropAnnotation(
+        mojom::ScrollToErrorReason::kNewerScrollToCall);
   }
   annotation_task_.reset();
 
@@ -224,6 +225,13 @@
       std::move(wrapped_callback), *focused_primary_page);
 }
 
+void GlicAnnotationManager::RemoveAnnotation(
+    mojom::ScrollToErrorReason reason) {
+  if (annotation_task_) {
+    annotation_task_->FailTaskOrDropAnnotation(reason);
+  }
+}
+
 GlicAnnotationManager::AnnotationTask::AnnotationTask(
     GlicAnnotationManager* annotation_manager,
     mojo::Remote<blink::mojom::AnnotationAgent> agent_remote,
@@ -273,11 +281,22 @@
   return state_ == State::kRunning;
 }
 
-void GlicAnnotationManager::AnnotationTask::FailTask(
-    mojom::ScrollToErrorReason error_reason) {
-  SetState(State::kFailed);
-  std::move(scroll_to_callback_).Run(error_reason);
-  ResetConnections();
+void GlicAnnotationManager::AnnotationTask::FailTaskOrDropAnnotation(
+    mojom::ScrollToErrorReason reason) {
+  switch (state_) {
+    case State::kRunning: {
+      FailTask(reason);
+      break;
+    }
+    case State::kActive: {
+      DropAnnotation();
+      break;
+    }
+    case State::kFailed:
+    case State::kInactive: {
+      break;
+    }
+  }
 }
 
 std::string GlicAnnotationManager::AnnotationTask::ToString(State state) {
@@ -333,22 +352,11 @@
   pref_change_registrar_.Reset();
 }
 
-void GlicAnnotationManager::AnnotationTask::FailTaskOrDropAnnotation(
-    mojom::ScrollToErrorReason reason) {
-  switch (state_) {
-    case State::kRunning: {
-      FailTask(reason);
-      break;
-    }
-    case State::kActive: {
-      DropAnnotation();
-      break;
-    }
-    case State::kFailed:
-    case State::kInactive: {
-      NOTREACHED();
-    }
-  }
+void GlicAnnotationManager::AnnotationTask::FailTask(
+    mojom::ScrollToErrorReason error_reason) {
+  SetState(State::kFailed);
+  std::move(scroll_to_callback_).Run(error_reason);
+  ResetConnections();
 }
 
 void GlicAnnotationManager::AnnotationTask::DidFinishAttachment(
diff --git a/chrome/browser/glic/host/glic_annotation_manager.h b/chrome/browser/glic/host/glic_annotation_manager.h
index 0249c8c..7f9c762 100644
--- a/chrome/browser/glic/host/glic_annotation_manager.h
+++ b/chrome/browser/glic/host/glic_annotation_manager.h
@@ -40,6 +40,9 @@
   void ScrollTo(mojom::ScrollToParamsPtr params,
                 mojom::WebClientHandler::ScrollToCallback callback);
 
+  // Removes any existing annotations.
+  void RemoveAnnotation(mojom::ScrollToErrorReason reason);
+
  private:
   // Represents the processing of a single `ScrollTo` call.
   // Note: The task is currently kept alive after the scroll is triggered and
@@ -63,9 +66,9 @@
     // ScrollTo callback hasn't been run yet if this is true.
     bool IsRunning() const;
 
-    // Runs the callback with `error_reason` and destroys `this`. Should only
-    // be called when `IsRunning()` is true.
-    void FailTask(mojom::ScrollToErrorReason error_reason);
+    // Fails the task with `reason` if it's still running, otherwise drops the
+    // active annotation.
+    void FailTaskOrDropAnnotation(mojom::ScrollToErrorReason reason);
 
    private:
     enum class State {
@@ -100,10 +103,9 @@
     void DropAnnotation();
     void ResetConnections();
 
-    // Fails the task with `reason` if it's still running, otherwise drops the
-    // active annotation. Should only be called if the task is running or a
-    // highlight is active, and will fail a CHECK otherwise.
-    void FailTaskOrDropAnnotation(mojom::ScrollToErrorReason reason);
+    // Runs the callback with `error_reason` and invalidates `this`. Should only
+    // be called when `IsRunning()` is true.
+    void FailTask(mojom::ScrollToErrorReason error_reason);
 
     // blink::mojom::AnnotationAgentHost overrides.
     void DidFinishAttachment(
diff --git a/chrome/browser/glic/host/glic_annotation_manager_interactive_uitest.cc b/chrome/browser/glic/host/glic_annotation_manager_interactive_uitest.cc
index 7ac4828..1e54a0e0 100644
--- a/chrome/browser/glic/host/glic_annotation_manager_interactive_uitest.cc
+++ b/chrome/browser/glic/host/glic_annotation_manager_interactive_uitest.cc
@@ -366,6 +366,13 @@
     }));
   }
 
+  auto UserSwitchesConversation() {
+    const DeepQuery kOnActiveThreadChanged{{"#dropScrollToHighlightBtn"}};
+    static constexpr char kClickFn[] = "el => el.click()";
+    return ExecuteJsAt(test::kGlicContentsElementId, kOnActiveThreadChanged,
+                       kClickFn);
+  }
+
   Selector ExactTextSelector(
       std::string text,
       std::optional<NodeIdCallback> node_id_cb = std::nullopt) {
@@ -981,6 +988,45 @@
             "Annotations should be dropped"));
 }
 
+IN_PROC_BROWSER_TEST_F(GlicAnnotationManagerUiTest,
+                       HighlightIsDroppedWhenActiveConversationChanged) {
+  RunTestSequence(
+      InstrumentTab(kActiveTabId),  //
+      NavigateWebContents(
+          kActiveTabId,
+          embedded_test_server()->GetURL("/scrollable_page_with_content.html")),
+      OpenGlicWindow(GlicWindowMode::kDetached),  //
+      SetTabContextPermission(true),
+      InsertFakeAnnotationService(),  //
+      ScrollToAsync(ExactTextSelector("does not matter")),
+      WaitForEvent(kBrowserViewElementId, kScrollToRequestReceived),  //
+      Do([&]() {
+        fake_service()->NotifyAttachment(
+            gfx::Rect(20, 20), blink::mojom::AttachmentResult::kSuccess);
+      }),
+      UserSwitchesConversation(),  //
+      WaitForEvent(kBrowserViewElementId, kAnnotationAgentDisconnectedByRemote),
+      Check([&]() { return !fake_service()->HighlightIsActive(); },
+            "Annotations should be dropped"));
+}
+
+IN_PROC_BROWSER_TEST_F(GlicAnnotationManagerUiTest,
+                       ActiveConversationChangedDuringScrollToRequest) {
+  RunTestSequence(
+      InstrumentTab(kActiveTabId),  //
+      NavigateWebContents(
+          kActiveTabId,
+          embedded_test_server()->GetURL("/scrollable_page_with_content.html")),
+      OpenGlicWindow(GlicWindowMode::kDetached),  //
+      SetTabContextPermission(true),
+      InsertFakeAnnotationService(),  //
+      ScrollToAsync(ExactTextSelector("does not matter")),
+      WaitForEvent(kBrowserViewElementId, kScrollToRequestReceived),         //
+      UserSwitchesConversation(),                                            //
+      WaitForScrollToError(mojom::ScrollToErrorReason::kDroppedByWebClient)  //
+  );
+}
+
 class GlicAnnotationManagerWithScrollToDisabledUiTest
     : public InteractiveGlicTest {
  public:
diff --git a/chrome/browser/glic/host/glic_page_handler.cc b/chrome/browser/glic/host/glic_page_handler.cc
index 450e573..8e2c31e 100644
--- a/chrome/browser/glic/host/glic_page_handler.cc
+++ b/chrome/browser/glic/host/glic_page_handler.cc
@@ -671,6 +671,17 @@
     annotation_manager_->ScrollTo(std::move(params), std::move(callback));
   }
 
+  void DropScrollToHighlight() override {
+    if (!base::FeatureList::IsEnabled(features::kGlicScrollTo)) {
+      receiver_.ReportBadMessage(
+          "Client should not be able to call DropScrollToHighlight without the "
+          "GlicScrollTo feature enabled.");
+      return;
+    }
+    annotation_manager_->RemoveAnnotation(
+        mojom::ScrollToErrorReason::kDroppedByWebClient);
+  }
+
   void SetSyntheticExperimentState(const std::string& trial_name,
                                    const std::string& group_name) override {
     g_browser_process->GetFeatures()
@@ -895,7 +906,7 @@
   mojo::Receiver<glic::mojom::WebClientHandler> receiver_;
   mojo::Remote<glic::mojom::WebClient> web_client_;
   std::unique_ptr<BrowserAttachObservation> browser_attach_observation_;
-  std::unique_ptr<GlicAnnotationManager> annotation_manager_;
+  const std::unique_ptr<GlicAnnotationManager> annotation_manager_;
   std::unique_ptr<system_permission_settings::ScopedObservation>
       system_permission_settings_observation_;
   std::vector<base::OnceClosure> on_get_user_profile_info_activation_callbacks_;
diff --git a/chrome/browser/glic/resources/browser_resources.grd b/chrome/browser/glic/resources/browser_resources.grd
index a17b770..00aceca 100644
--- a/chrome/browser/glic/resources/browser_resources.grd
+++ b/chrome/browser/glic/resources/browser_resources.grd
@@ -189,6 +189,12 @@
       <message name="IDS_SETTINGS_GLIC_PERMISSIONS_SECTION" translateable="false" desc="Name of the Glic settings section related to permissions.">
         Permissions
       </message>
+      <message name="IDS_SETTINGS_GLIC_BUTTON_TOGGLE" translateable="false" desc="Name of the toggle that controls whether the glic button is shown in the tabstrip.">
+        Show glic at the top of the browser
+      </message>
+      <message name="IDS_SETTINGS_GLIC_BUTTON_TOGGLE_SUBLABEL" translateable="false" desc="Sublabel of the toggle that controls whether the glic button is shown in the tabstrip.">
+        Quickly open glic whenever you need it
+      </message>
       <if expr="is_macosx">
         <message name="IDS_SETTINGS_GLIC_OS_WIDGET_TOGGLE" translateable="false" desc="Name of the Glic setting for the toggle enabling feature in the menu (on Mac only).">
           Feature in your toolbar
diff --git a/chrome/browser/glic/resources/internal b/chrome/browser/glic/resources/internal
index 3784a74..f236f97 160000
--- a/chrome/browser/glic/resources/internal
+++ b/chrome/browser/glic/resources/internal
@@ -1 +1 @@
-Subproject commit 3784a743ccebd82808a50e14e99db28643e95bac
+Subproject commit f236f97eebe6c78b5cec74e6c82f7ecabc4cac85
diff --git a/chrome/browser/glic/widget/glic_window_controller_impl.cc b/chrome/browser/glic/widget/glic_window_controller_impl.cc
index f1df9fc..cd56142 100644
--- a/chrome/browser/glic/widget/glic_window_controller_impl.cc
+++ b/chrome/browser/glic/widget/glic_window_controller_impl.cc
@@ -44,6 +44,7 @@
 #include "chrome/browser/ui/views/tabs/window_finder.h"
 #include "chrome/common/chrome_features.h"
 #include "components/tabs/public/tab_interface.h"
+#include "components/web_modal/web_contents_modal_dialog_manager.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/ui_base_types.h"
@@ -365,6 +366,9 @@
     // attach indicator.
     HandleGlicButtonIndicator();
   }
+
+  modal_dialog_host_observers_.Notify(
+      &web_modal::ModalDialogHostObserver::OnPositionRequiresUpdate);
 }
 
 void GlicWindowControllerImpl::OnWidgetUserResizeStarted() {
@@ -669,6 +673,14 @@
   // Immediately hook up the WebView to the WebContents.
   GetGlicView()->SetWebContents(host().webui_contents());
   GetGlicView()->UpdateBackgroundColor();
+
+  // Add capability to show web modal dialogs (e.g. Data Controls Dialogs for
+  // enterprise users) via constrained_window APIs.
+  web_modal::WebContentsModalDialogManager::CreateForWebContents(
+      host().webui_contents());
+  web_modal::WebContentsModalDialogManager::FromWebContents(
+      host().webui_contents())
+      ->SetDelegate(this);
 }
 
 void GlicWindowControllerImpl::SetupGlicWidgetAccessibilityText() {
@@ -1019,6 +1031,12 @@
   NotifyIfPanelStateChanged();
   window_activation_callback_list_.Notify(false);
 
+  modal_dialog_host_observers_.Notify(
+      &web_modal::ModalDialogHostObserver::OnHostDestroying);
+  web_modal::WebContentsModalDialogManager::FromWebContents(
+      host().webui_contents())
+      ->SetDelegate(nullptr);
+
   host().PanelWasClosed();
   if (base::FeatureList::IsEnabled(features::kGlicUnloadOnClose)) {
     host().Shutdown();
@@ -1414,4 +1432,49 @@
 Browser* GlicWindowControllerImpl::attached_browser() {
   return attached_browser_;
 }
+
+web_modal::WebContentsModalDialogHost*
+GlicWindowControllerImpl::GetWebContentsModalDialogHost() {
+  return this;
+}
+
+gfx::Size GlicWindowControllerImpl::GetMaximumDialogSize() {
+  if (!glic_widget_) {
+    return gfx::Size();
+  }
+  return glic_widget_->GetClientAreaBoundsInScreen().size();
+}
+
+gfx::NativeView GlicWindowControllerImpl::GetHostView() const {
+  if (!glic_widget_) {
+    return gfx::NativeView();
+  }
+  return glic_widget_->GetNativeView();
+}
+
+gfx::Point GlicWindowControllerImpl::GetDialogPosition(
+    const gfx::Size& dialog_size) {
+  if (!glic_widget_) {
+    return gfx::Point();
+  }
+  gfx::Rect client_area_bounds = glic_widget_->GetClientAreaBoundsInScreen();
+  return gfx::Point((client_area_bounds.width() - dialog_size.width()) / 2, 0);
+}
+
+bool GlicWindowControllerImpl::ShouldDialogBoundsConstrainedByHost() {
+  // Allows web modal dialogs to extend beyond the boundary of glic window.
+  // These web modals are usually larger than the glic window.
+  return false;
+}
+
+void GlicWindowControllerImpl::AddObserver(
+    web_modal::ModalDialogHostObserver* observer) {
+  modal_dialog_host_observers_.AddObserver(observer);
+}
+
+void GlicWindowControllerImpl::RemoveObserver(
+    web_modal::ModalDialogHostObserver* observer) {
+  modal_dialog_host_observers_.RemoveObserver(observer);
+}
+
 }  // namespace glic
diff --git a/chrome/browser/glic/widget/glic_window_controller_impl.h b/chrome/browser/glic/widget/glic_window_controller_impl.h
index 9a2704a8..5f809a94 100644
--- a/chrome/browser/glic/widget/glic_window_controller_impl.h
+++ b/chrome/browser/glic/widget/glic_window_controller_impl.h
@@ -26,6 +26,8 @@
 #include "chrome/browser/glic/widget/local_hotkey_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
+#include "components/web_modal/web_contents_modal_dialog_host.h"
+#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/base/interaction/element_tracker.h"
 #include "ui/views/widget/widget.h"
@@ -51,9 +53,12 @@
 // See the |State| enum below for the lifecycle of the window. When the glic
 // window is open |attached_browser_| indicates if the window is attached or
 // standalone. See |IsAttached|
-class GlicWindowControllerImpl : public GlicWindowController,
-                                 public views::WidgetObserver,
-                                 public Host::Observer {
+class GlicWindowControllerImpl
+    : public GlicWindowController,
+      public views::WidgetObserver,
+      public Host::Observer,
+      public web_modal::WebContentsModalDialogManagerDelegate,
+      public web_modal::WebContentsModalDialogHost {
  public:
   GlicWindowControllerImpl(const GlicWindowControllerImpl&) = delete;
   GlicWindowControllerImpl& operator=(const GlicWindowControllerImpl&) = delete;
@@ -249,6 +254,18 @@
   // Returns true of the window is showing and the content is loaded.
   bool IsWindowOpenAndReady();
 
+  // web_modal::WebContentsModalDialogManagerDelegate:
+  web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost()
+      override;
+
+  // web_modal::WebContentsModalDialogHost:
+  gfx::Size GetMaximumDialogSize() override;
+  gfx::NativeView GetHostView() const override;
+  gfx::Point GetDialogPosition(const gfx::Size& dialog_size) override;
+  bool ShouldDialogBoundsConstrainedByHost() override;
+  void AddObserver(web_modal::ModalDialogHostObserver* observer) override;
+  void RemoveObserver(web_modal::ModalDialogHostObserver* observer) override;
+
   // Observes the glic widget.
   base::ScopedObservation<views::Widget, views::WidgetObserver>
       glic_widget_observation_{this};
@@ -299,6 +316,11 @@
 
   base::ObserverList<StateObserver> state_observers_;
 
+  // Used by web modals to listens for glic window events, e.g. size change or
+  // window close.
+  base::ObserverList<web_modal::ModalDialogHostObserver>::Unchecked
+      modal_dialog_host_observers_;
+
   // The announcement should happen the first time focus is lost after the FRE.
   bool do_focus_loss_announcement_ = false;
 
diff --git a/chrome/browser/notifications/platform_notification_service_unittest.cc b/chrome/browser/notifications/platform_notification_service_unittest.cc
index d6d4d49..6c5d380d 100644
--- a/chrome/browser/notifications/platform_notification_service_unittest.cc
+++ b/chrome/browser/notifications/platform_notification_service_unittest.cc
@@ -424,7 +424,6 @@
                   RevocationState::kProposed,
               .site_engagement = 0.0,
               .daily_notification_count = kDailyNotificationCount,
-              .lifetime = base::Days(30),
           });
 
   PlatformNotificationData data;
@@ -459,7 +458,6 @@
                   RevocationState::kProposed,
               .site_engagement = 0.0,
               .daily_notification_count = kDailyNotificationCount,
-              .lifetime = base::Days(30),
           });
 
   PlatformNotificationData data;
diff --git a/chrome/browser/page_load_metrics/integration_tests/data/soft_navigation.html b/chrome/browser/page_load_metrics/integration_tests/data/soft_navigation.html
index ced678a..b00de34 100644
--- a/chrome/browser/page_load_metrics/integration_tests/data/soft_navigation.html
+++ b/chrome/browser/page_load_metrics/integration_tests/data/soft_navigation.html
@@ -128,6 +128,9 @@
     }
 
     const waitForSoftNavigationEntry = async () => {
+      if (!PerformanceObserver.supportedEntryTypes.includes('soft-navigation')) {
+        throw new Error("Soft Navigations API not supported");
+      }
       await new Promise(resolve => {
         (new PerformanceObserver(resolve)).observe({
           type: 'soft-navigation', buffered: true
@@ -249,4 +252,4 @@
   </script>
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/chrome/browser/page_load_metrics/integration_tests/soft_navigation_metrics_browsertest.cc b/chrome/browser/page_load_metrics/integration_tests/soft_navigation_metrics_browsertest.cc
index f4438409..2357c5ce 100644
--- a/chrome/browser/page_load_metrics/integration_tests/soft_navigation_metrics_browsertest.cc
+++ b/chrome/browser/page_load_metrics/integration_tests/soft_navigation_metrics_browsertest.cc
@@ -36,8 +36,9 @@
     command_line->AppendSwitch(switches::kEnableGpuBenchmarking);
     command_line->AppendSwitch(blink::switches::kAllowPreCommitInput);
     std::vector<base::test::FeatureRef> enabled_feature_list = {
+        blink::features::kSoftNavigationDetection,
         blink::features::kNavigationId,
-        blink::features::kSoftNavigationDetection};
+        blink::features::kSoftNavigationDetectionAdvancedPaintAttribution};
     if (GetParam()) {
       enabled_feature_list.push_back(
           blink::features::kSoftNavigationHeuristics);
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index d6881c7..5724b29 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -2387,6 +2387,10 @@
     prefs::kNTPFooterManagementNoticeEnabled,
     base::Value::Type::BOOLEAN },
 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+  { key::kAIModeSearchSuggestSettings,
+    omnibox::kAIModeSearchSuggestSettings,
+    base::Value::Type::INTEGER },
+
 };
 // clang-format on
 
@@ -3365,6 +3369,10 @@
       key::kGenAIInlineImageSettings,
       ash::prefs::kLobsterEnterprisePolicySettings);
 #endif  // BUILDFLAG(IS_CHROMEOS)
+  gen_ai_default_policies.emplace_back(
+      key::kAIModeSearchSuggestSettings, omnibox::kAIModeSearchSuggestSettings,
+      GenAiDefaultSettingsPolicyHandler::PolicyValueToPrefMap(
+          {{0, 0}, {1, 0}, {2, 1}}));
   handlers->AddHandler(std::make_unique<GenAiDefaultSettingsPolicyHandler>(
       std::move(gen_ai_default_policies)));
 
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 6825736..1ade93d 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -2118,7 +2118,7 @@
   extensions::login_api::RegisterProfilePrefs(registry);
   extensions::platform_keys::EnterprisePlatformKeysRegisterProfilePrefs(
       registry);
-  certificate_manager::CertificatesHandler::RegisterProfilePrefs(registry);
+  certificate_manager::RegisterProfilePrefs(registry);
   chromeos::cloud_storage::RegisterProfilePrefs(registry);
   chromeos::cloud_upload::RegisterProfilePrefs(registry);
   policy::NetworkAnnotationBlocklistHandler::RegisterPrefs(registry);
diff --git a/chrome/browser/privacy_sandbox/notice/notice.mojom b/chrome/browser/privacy_sandbox/notice/notice.mojom
index dab0371..df48a4de 100644
--- a/chrome/browser/privacy_sandbox/notice/notice.mojom
+++ b/chrome/browser/privacy_sandbox/notice/notice.mojom
@@ -21,7 +21,7 @@
   // Notice shown.
   kShown = 5,
 };
-// LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxNoticeEvent)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxNoticeEvent)
 
 // An identifier for the different notices.
 enum PrivacySandboxNotice {
diff --git a/chrome/browser/privacy_sandbox/notice/notice_storage.h b/chrome/browser/privacy_sandbox/notice/notice_storage.h
index 4c417ff..3938b4d 100644
--- a/chrome/browser/privacy_sandbox/notice/notice_storage.h
+++ b/chrome/browser/privacy_sandbox/notice/notice_storage.h
@@ -51,7 +51,7 @@
   kTimedOut = 9,
   kMaxValue = kTimedOut,
 };
-// LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxNoticeAction)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxNoticeAction)
 
 // Different notice action outcomes. These values are persisted to logs. Entries
 // should not be renumbered and numeric values should never be reused.
@@ -65,7 +65,7 @@
   kDuplicateActionTaken = 2,
   kMaxValue = kDuplicateActionTaken,
 };
-// LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxNoticeActionBehavior)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxNoticeActionBehavior)
 
 struct NoticeEventTimestampPair {
   bool operator==(const NoticeEventTimestampPair& other) const = default;
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.h b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
index cc95df4..4e8eb48 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
@@ -72,7 +72,7 @@
     kSignedInCapabilityUnknown = 4,
     kMaxValue = kSignedInCapabilityUnknown,
   };
-  // LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxPrimaryAccountUserGroups)
+  // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxPrimaryAccountUserGroups)
 
   // Suppression reason for a generic prompt.
   // LINT.IfChange(FakeNoticePromptSuppressionReason)
@@ -90,7 +90,7 @@
     kNoticeShownBefore = 1 << 3,
     kMaxValue = kNoticeShownBefore,
   };
-  // LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxPromptSuppressionReason)
+  // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxPromptSuppressionReason)
 
   // An exhaustive list of actions related to showing & interacting with the
   // prompt. Includes actions which do not impact consent / notice state.
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 24df7a3..eaaab56 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -4544,6 +4544,7 @@
 
 void RenderViewContextMenu::ExecSaveVideoFrameAs() {
   base::RecordAction(UserMetricsAction("MediaContextMenu_SaveVideoFrameAs"));
+  RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
   MediaPlayerAction(blink::mojom::MediaPlayerAction(
       blink::mojom::MediaPlayerActionType::kSaveVideoFrameAs,
       /*enable=*/true));
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
index c4484a2..5e51b875 100644
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -91,7 +91,10 @@
   }
 
   if (enable_extensions) {
-    public_deps += [ "accessibility:reading_mode_gdocs_extension_resources" ]
+    public_deps += [
+      "accessibility:reading_mode_gdocs_extension_resources",
+      "extensions_zero_state_promo:resources",
+    ]
   }
 
   if (is_mac) {
diff --git a/chrome/browser/resources/ash/settings/os_printing_page/OWNERS b/chrome/browser/resources/ash/settings/os_printing_page/OWNERS
index 9d91b85b..402891a4 100644
--- a/chrome/browser/resources/ash/settings/os_printing_page/OWNERS
+++ b/chrome/browser/resources/ash/settings/os_printing_page/OWNERS
@@ -1,2 +1 @@
 gavinwill@chromium.org
-dpad@google.com
diff --git a/chrome/browser/resources/certificate_manager/certificate_manager_dialog.html b/chrome/browser/resources/certificate_manager/certificate_manager_dialog.html
deleted file mode 100644
index eb5a561..0000000
--- a/chrome/browser/resources/certificate_manager/certificate_manager_dialog.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<html dir="$i18n{textdirection}" lang="$i18n{language}">
-
-  <head>
-    <meta charset="utf-8">
-    <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
-    <script type="module" src="./strings.m.js"></script>
-    <script type="module" src="chrome://resources/cr_components/certificate_manager/certificate_manager.js"></script>
-  </head>
-
-  <body>
-    <certificate-manager></certificate-manager>
-  </body>
-
-</html>
diff --git a/chrome/browser/resources/extensions_zero_state_promo/BUILD.gn b/chrome/browser/resources/extensions_zero_state_promo/BUILD.gn
new file mode 100644
index 0000000..4141e686
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/BUILD.gn
@@ -0,0 +1,49 @@
+# Copyright 2025 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//ui/webui/resources/tools/build_webui.gni")
+
+assert(enable_extensions, "enable extensions check failed")
+assert(!is_android,
+       "extensions zero state promo should not be enabled for android")
+assert(!is_ios, "extensions zero state promo should not be enabled for ios")
+
+build_webui("build") {
+  grd_prefix = "extensions_zero_state_promo"
+
+  static_files = [ "zero_state_promo.html" ]
+
+  ts_files = [
+    "zero_state_promo_app.ts",
+    "zero_state_promo_app.html.ts",
+    "zero_state_promo_browser_proxy.ts",
+  ]
+
+  icons_html_files = [ "icons.html" ]
+  html_to_wrapper_template = "detect"
+
+  # Files that are passed as input to css_to_wrapper().
+  css_files = [ "zero_state_promo_app.css" ]
+
+  mojo_files_deps = [
+    "//chrome/browser/ui/webui/extensions_zero_state_promo:mojo_bindings_ts__generator",
+    "//ui/webui/resources/cr_components/help_bubble:mojo_bindings_ts__generator",
+  ]
+  mojo_files = [
+    "$root_gen_dir/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom-webui.ts",
+    "$root_gen_dir/ui/webui/resources/cr_components/help_bubble/custom_help_bubble.mojom-webui.ts",
+  ]
+
+  ts_composite = true
+
+  ts_deps = [
+    "//third_party/lit/v3_0:build_ts",
+    "//ui/webui/resources/cr_components/help_bubble:build_ts",
+    "//ui/webui/resources/cr_elements:build_ts",
+    "//ui/webui/resources/js:build_ts",
+    "//ui/webui/resources/mojo:build_ts",
+  ]
+
+  webui_context_type = "trusted"
+}
diff --git a/chrome/browser/resources/extensions_zero_state_promo/DIR_METADATA b/chrome/browser/resources/extensions_zero_state_promo/DIR_METADATA
new file mode 100644
index 0000000..3a31847
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail: {
+  component: "Platform>Extensions"
+}
+team_email: "webstore-consumer@google.com"
+buganizer_public: {
+  component_id: 1456110
+}
diff --git a/chrome/browser/resources/extensions_zero_state_promo/OWNERS b/chrome/browser/resources/extensions_zero_state_promo/OWNERS
new file mode 100644
index 0000000..efdf0ed
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/OWNERS
@@ -0,0 +1,4 @@
+uwyiming@google.com
+phu@google.com
+dfried@chromium.org
+webstore-consumer@google.com
diff --git a/chrome/browser/resources/extensions_zero_state_promo/icons.html b/chrome/browser/resources/extensions_zero_state_promo/icons.html
new file mode 100644
index 0000000..2f53592
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/icons.html
@@ -0,0 +1,18 @@
+<cr-iconset name="zero-state-promo" size="14">
+  <svg>
+    <defs>
+      <g id="ai">
+        <path d="M7 13.4c-.022 0-.033-.011-.033-.033 0-.878-.167-1.7-.5-2.467A6.244 6.244 0 0 0 3.1 7.533a6.119 6.119 0 0 0-2.467-.5C.611 7.033.6 7.023.6 7c0-.022.011-.033.033-.033A6.3 6.3 0 0 0 3.1 6.483a6.474 6.474 0 0 0 2.017-1.366A6.244 6.244 0 0 0 6.467 3.1c.333-.767.5-1.589.5-2.467C6.967.611 6.977.6 7 .6c.022 0 .033.011.033.033 0 .878.161 1.7.484 2.467a6.474 6.474 0 0 0 1.366 2.017A6.473 6.473 0 0 0 10.9 6.483a6.3 6.3 0 0 0 2.467.484c.022 0 .033.01.033.033 0 .022-.011.033-.033.033-.878 0-1.7.167-2.467.5a6.244 6.244 0 0 0-2.017 1.35A6.473 6.473 0 0 0 7.517 10.9a6.3 6.3 0 0 0-.484 2.467c0 .022-.01.033-.033.033Z"/>
+      </g>
+      <g id="coupons">
+        <path d="M1.45 13.533c-.389 0-.717-.133-.983-.4a1.336 1.336 0 0 1-.4-.983V4.717c0-.39.133-.717.4-.984.266-.266.594-.4.983-.4H2.5v-.266c.011-.69.25-1.295.717-1.817C3.683.728 4.277.467 5 .467a2.38 2.38 0 0 1 1.75.716c.489.478.739 1.061.75 1.75v.4h1.05c.389 0 .717.134.983.4.267.267.4.595.4.984v7.433c0 .389-.133.717-.4.983-.266.267-.594.4-.983.4h-7.1Zm0-1.383h7.1V4.717H7.5v.9c0 .2-.067.366-.2.5-.133.133-.3.2-.5.2a.715.715 0 0 1-.5-.2.678.678 0 0 1-.2-.5v-.9H3.9v.9c0 .2-.067.366-.2.5-.133.133-.3.2-.5.2a.715.715 0 0 1-.5-.2.678.678 0 0 1-.2-.5v-.9H1.45v7.433ZM3.9 3.333h2.2v-.4c0-.3-.111-.555-.333-.766A1.044 1.044 0 0 0 5 1.85a1.1 1.1 0 0 0-.783.317 1.044 1.044 0 0 0-.317.766v.4ZM1.45 12.15V4.717v7.433Z"/>
+      </g>
+      <g id="productivity">
+        <path d="M7 13.4a6.238 6.238 0 0 1-2.483-.5 6.623 6.623 0 0 1-2.05-1.367A6.624 6.624 0 0 1 1.1 9.483 6.237 6.237 0 0 1 .6 7c0-.889.167-1.717.5-2.483A6.421 6.421 0 0 1 4.517 1.1 6.237 6.237 0 0 1 7 .6a6.16 6.16 0 0 1 2.483.5 6.287 6.287 0 0 1 2.034 1.383A6.286 6.286 0 0 1 12.9 4.517c.333.766.5 1.594.5 2.483 0 .3-.022.594-.067.883a5.48 5.48 0 0 1-.166.85 2.02 2.02 0 0 0-.517-.35 1.855 1.855 0 0 0-.6-.166c.056-.2.094-.4.117-.6.022-.2.033-.406.033-.617 0-1.444-.506-2.672-1.517-3.683C9.673 2.306 8.444 1.8 7 1.8s-2.672.506-3.683 1.517C2.306 4.327 1.8 5.556 1.8 7s.506 2.672 1.517 3.683C4.327 11.694 5.556 12.2 7 12.2c.578 0 1.122-.083 1.633-.25a5.19 5.19 0 0 0 1.434-.75c.1.189.227.35.383.483.156.134.328.245.517.334a6.416 6.416 0 0 1-1.834 1.016A6.147 6.147 0 0 1 7 13.4Zm4.8-2.4a.772.772 0 0 1-.567-.233A.772.772 0 0 1 11 10.2c0-.222.078-.411.233-.567A.772.772 0 0 1 11.8 9.4c.222 0 .411.078.567.233a.772.772 0 0 1 .233.567.772.772 0 0 1-.233.567.772.772 0 0 1-.567.233ZM9.233 9.833 6.4 7V3h1.2v3.5l2.483 2.483-.85.85Z"/>
+      </g>
+      <g id="writing">
+        <path d="M2.833 5.217 2.1 3.583l-1.633-.75L2.1 2.1 2.833.467l.75 1.633 1.634.733-1.634.75-.75 1.634Zm-1.566 7.516V10.3l4.516-4.5L8.2 8.217l-4.5 4.516H1.267ZM2.65 11.35h.467L6.25 8.217l-.217-.25-.25-.217-3.133 3.133v.467Zm6.4-3.983L6.633 4.95l3.434-3.433c.089-.078.183-.14.283-.184a.892.892 0 0 1 .333-.066c.111 0 .223.022.334.066.11.045.21.106.3.184l1.166 1.166c.078.09.14.19.184.3a.892.892 0 0 1 .066.334.892.892 0 0 1-.066.333.71.71 0 0 1-.184.3L9.05 7.367Zm-3.017.6-.25-.217.25.217.217.25-.217-.25Z"/>
+      </g>
+    </defs>
+  </svg>
+</cr-iconset>
diff --git a/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo.html b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo.html
new file mode 100644
index 0000000..b4b4fc3
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html dir="$i18n{textdirection}" lang="$i18n{language}">
+  <head>
+    <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
+    <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
+    <link rel="stylesheet" href="chrome://theme/colors.css?sets=ui,chrome">
+    <meta charset="utf-8">
+    <style>
+      @media (prefers-color-scheme: dark) {
+        html {
+          background: var(--md-background-color);
+        }
+      }
+      body {
+        margin: 0;
+      }
+    </style>
+  </head>
+  <extensions-zero-state-promo-app></extensions-zero-state-promo-app>
+  <script type="module" src="zero_state_promo_app.js"></script>
+</html>
diff --git a/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.css b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.css
new file mode 100644
index 0000000..f14afad
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.css
@@ -0,0 +1,67 @@
+/* Copyright 2025 The Chromium Authors
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file. */
+
+/* #css_wrapper_metadata_start
+ * #type=style-lit
+ * #import=chrome://resources/cr_elements/cr_shared_vars.css.js
+ * #import=chrome://resources/cr_elements/cr_icons_lit.css.js
+ * #import=chrome://resources/cr_elements/cr_hidden_style_lit.css.js
+ * #import=chrome://resources/cr_elements/cr_shared_style_lit.css.js
+ * #include=cr-hidden-style-lit cr-shared-style-lit cr-icons-lit
+ * #css_wrapper_metadata_end */
+
+:host {
+  --zero-state-promo-background-color: var(--color-button-foreground);
+  --zero-state-promo-foreground-color: var(--color-button-background);
+  --top-container-padding: 20px;
+
+  border-radius: 12px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  gap: 8px;
+  padding: 20px;
+  width: 300px;
+  background-color: var(--zero-state-promo-background-color);
+  color: var(--zero-state-promo-foreground-color);
+}
+
+#headerContainer {
+  align-items: flex-start;
+  display: flex;
+  justify-content: space-between;
+  padding: 0px;
+}
+
+#title {
+  font-size: 18px;
+  font-weight: 500;
+  line-height: 24px;
+  margin: 0px;
+  width: calc(100% - var(--top-container-padding) * 2);
+}
+
+#dismissButton {
+  --cr-icon-button-icon-size: 18px;
+  --cr-icon-button-margin-end: 0px;
+  --cr-icon-button-size: 20px;
+  flex-shrink:0;
+}
+
+#sectionHeaderContainer {
+  font-size: 15px;
+  font-weight: 400;
+  line-height: 20px;
+  padding-bottom: 4px;
+}
+
+#labelContainer {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  gap: 8px;
+  padding: 0px;
+  --color-chip-foreground: var(--zero-state-promo-foreground-color);
+  --color-chip-icon: var(--color-sys-inverse-primary);
+}
diff --git a/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.html.ts b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.html.ts
new file mode 100644
index 0000000..aa985d7
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.html.ts
@@ -0,0 +1,47 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {html} from '//resources/lit/v3_0/lit.rollup.js';
+
+import type {ZeroStatePromoAppElement} from './zero_state_promo_app.js';
+
+export function getHtml(this: ZeroStatePromoAppElement) {
+  // clang-format off
+  return html`<!--_html_template_start_-->
+<div id="headerContainer">
+  <h3 id="title">$i18n{extensionsZeroStateIphHeader}</h3>
+  <cr-icon-button id="dismissButton"
+      class="icon-clear"
+      title="$i18n{extensionsZeroStateIphDismissButtonTitle}"
+      @click="${this.onDismissButtonClick_}">
+  </cr-icon-button>
+</div>
+<div id="sectionHeaderContainer">
+  $i18nRaw{extensionsZeroStateChipsIphDesc}
+</div>
+<div id="labelContainer">
+  <cr-chip id="couponsButton" chip-role="link"
+      @click="${this.onCouponsButtonClick_}">
+    <cr-icon icon="zero-state-promo:coupons"></cr-icon>
+    $i18n{extensionsZeroStateIphShoppingCategoryLabel}
+  </cr-chip>
+  <cr-chip id="writingButton" chip-role="link"
+      @click="${this.onWritingButtonClick_}">
+    <cr-icon icon="zero-state-promo:writing"></cr-icon>
+    $i18n{extensionsZeroStateIphWritingHelpCollectionLabel}
+  </cr-chip>
+  <cr-chip id="productivityButton"
+      @click="${this.onProductivityButtonClick_}">
+    <cr-icon icon="zero-state-promo:productivity"></cr-icon>
+    $i18n{extensionsZeroStateIphProductivityCategoryLabel}
+  </cr-chip>
+  <cr-chip id="aiButton"
+      @click="${this.onAiButtonClick_}">
+    <cr-icon icon="zero-state-promo:ai"></cr-icon>
+    $i18n{extensionsZeroStateIphAiProductivityCollectionLabel}
+  </cr-chip>
+</div>
+<!--_html_template_end_-->`;
+  // clang-format on
+}
diff --git a/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.ts b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.ts
new file mode 100644
index 0000000..52553737
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_app.ts
@@ -0,0 +1,93 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+import './icons.html.js';
+import 'chrome://resources/cr_elements/cr_button/cr_button.js';
+import 'chrome://resources/cr_elements/cr_chip/cr_chip.js';
+import 'chrome://resources/cr_elements/cr_icon/cr_icon.js';
+import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
+
+import type {CustomHelpBubbleHandlerInterface} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble.mojom-webui.js';
+import {CustomHelpBubbleUserAction} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble.mojom-webui.js';
+import {CustomHelpBubbleProxyImpl} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble_proxy.js';
+import type {CrChipElement} from 'chrome://resources/cr_elements/cr_chip/cr_chip.js';
+import type {CrIconButtonElement} from 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
+import {CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js';
+
+import {WebStoreLinkClicked} from './zero_state_promo.mojom-webui.js';
+import {getCss} from './zero_state_promo_app.css.js';
+import {getHtml} from './zero_state_promo_app.html.js';
+import type {ZeroStatePromoBrowserProxy} from './zero_state_promo_browser_proxy.js';
+import {ZeroStatePromoBrowserProxyImpl} from './zero_state_promo_browser_proxy.js';
+
+export interface ZeroStatePromoAppElement {
+  $: {
+    dismissButton: CrIconButtonElement,
+    couponsButton: CrChipElement,
+    writingButton: CrChipElement,
+    productivityButton: CrChipElement,
+    aiButton: CrChipElement,
+  };
+}
+
+export class ZeroStatePromoAppElement extends CrLitElement {
+  static get is() {
+    return 'extensions-zero-state-promo-app';
+  }
+
+  static override get styles() {
+    return getCss();
+  }
+
+  override render() {
+    return getHtml.bind(this)();
+  }
+
+  private apiProxy_: ZeroStatePromoBrowserProxy =
+      ZeroStatePromoBrowserProxyImpl.getInstance();
+  private customHelpBubbleHandler_: CustomHelpBubbleHandlerInterface =
+      CustomHelpBubbleProxyImpl.getInstance().getHandler();
+
+  protected onChromeWebStoreLinkClick_() {
+    this.apiProxy_.launchWebStoreLink(WebStoreLinkClicked.kDiscoverExtension);
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kAction);
+  }
+
+  protected onCouponsButtonClick_() {
+    this.apiProxy_.launchWebStoreLink(WebStoreLinkClicked.kCoupon);
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kAction);
+  }
+
+  protected onWritingButtonClick_() {
+    this.apiProxy_.launchWebStoreLink(WebStoreLinkClicked.kWriting);
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kAction);
+  }
+
+  protected onProductivityButtonClick_() {
+    this.apiProxy_.launchWebStoreLink(WebStoreLinkClicked.kProductivity);
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kAction);
+  }
+
+  protected onAiButtonClick_() {
+    this.apiProxy_.launchWebStoreLink(WebStoreLinkClicked.kAi);
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kAction);
+  }
+
+  protected onDismissButtonClick_() {
+    this.customHelpBubbleHandler_.notifyUserAction(
+        CustomHelpBubbleUserAction.kDismiss);
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    'extensions-zero-state-promo-app': ZeroStatePromoAppElement;
+  }
+}
+
+customElements.define(ZeroStatePromoAppElement.is, ZeroStatePromoAppElement);
diff --git a/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_browser_proxy.ts b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_browser_proxy.ts
new file mode 100644
index 0000000..8ff2d05
--- /dev/null
+++ b/chrome/browser/resources/extensions_zero_state_promo/zero_state_promo_browser_proxy.ts
@@ -0,0 +1,40 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview A helper object used from the "Web Store Discovery" dialog to
+ * interact with the browser.
+ */
+import {PageHandlerFactory, PageHandlerRemote} from './zero_state_promo.mojom-webui.js';
+import type {WebStoreLinkClicked} from './zero_state_promo.mojom-webui.js';
+
+let instance: ZeroStatePromoBrowserProxy|null = null;
+
+export interface ZeroStatePromoBrowserProxy {
+  launchWebStoreLink(link: WebStoreLinkClicked): void;
+}
+
+export class ZeroStatePromoBrowserProxyImpl implements
+    ZeroStatePromoBrowserProxy {
+  private handler_: PageHandlerRemote;
+
+  constructor() {
+    this.handler_ = new PageHandlerRemote();
+
+    const factory = PageHandlerFactory.getRemote();
+    factory.createPageHandler(this.handler_.$.bindNewPipeAndPassReceiver());
+  }
+
+  launchWebStoreLink(link: WebStoreLinkClicked) {
+    this.handler_.launchWebStoreLink(link);
+  }
+
+  static getInstance(): ZeroStatePromoBrowserProxy {
+    return instance || (instance = new ZeroStatePromoBrowserProxyImpl());
+  }
+
+  static setInstance(obj: ZeroStatePromoBrowserProxy) {
+    instance = obj;
+  }
+}
diff --git a/chrome/browser/resources/glic/glic_api/glic_api.ts b/chrome/browser/resources/glic/glic_api/glic_api.ts
index 55d54d0..903c06e 100644
--- a/chrome/browser/resources/glic/glic_api/glic_api.ts
+++ b/chrome/browser/resources/glic/glic_api/glic_api.ts
@@ -422,14 +422,21 @@
    * @todo Not yet implemented for PDFs. https://crbug.com/395859365
    *
    * Scrolls to and (optionally) highlights content specified by an input
-   * selector. Returns a promise that resolves when the selected content is
-   * matched and a scroll is started.
+   * selector. Only one highlight is active at a time. Returns a promise that
+   * resolves when the selected content is matched and a scroll is started. Only
+   * available when `GlicScrollTo` is enabled.
    *
    * @throws {ScrollToError} on failure.
    */
   scrollTo?(params: ScrollToParams): Promise<void>;
 
   /**
+   * Drops the content highlight from scrollTo(). No effects if no contents are
+   * highlighted. Only available when `GlicScrollTo` is enabled.
+   */
+  dropScrollToHighlight?(): void;
+
+  /**
    * Enrolls the Chrome client in the synthetic experiment group specified by
    * trial_name.group_name. Enrollment will only start when the API is called
    * and end when Chrome closes.
@@ -1093,6 +1100,11 @@
    * Tab context permission was disabled.
    */
   TAB_CONTEXT_PERMISSION_DISABLED = 7,
+
+  /**
+   * The web client requested to drop the highlight via `dropScrollToHighlight`.
+   */
+  DROPPED_BY_WEB_CLIENT = 8,
 }
 
 /**
diff --git a/chrome/browser/resources/glic/glic_api_impl/glic_api_client.ts b/chrome/browser/resources/glic/glic_api_impl/glic_api_client.ts
index ad4f01d..69b4c0f 100644
--- a/chrome/browser/resources/glic/glic_api_impl/glic_api_client.ts
+++ b/chrome/browser/resources/glic/glic_api_impl/glic_api_client.ts
@@ -234,6 +234,7 @@
 
     if (!state.enableScrollTo) {
       this.scrollTo = undefined;
+      this.dropScrollToHighlight = undefined;
     }
 
     if (!state.enableActInFocusedTab) {
@@ -514,6 +515,11 @@
     }
     return zeroStateResult.suggestions;
   }
+
+  dropScrollToHighlight?(): void {
+    this.sender.requestWithResponse(
+        'glicBrowserDropScrollToHighlight', undefined);
+  }
 }
 
 class GlicBrowserHostMetricsImpl implements GlicBrowserHostMetrics {
diff --git a/chrome/browser/resources/glic/glic_api_impl/glic_api_host.ts b/chrome/browser/resources/glic/glic_api_impl/glic_api_host.ts
index 3228d661..9fdaa36 100644
--- a/chrome/browser/resources/glic/glic_api_impl/glic_api_host.ts
+++ b/chrome/browser/resources/glic/glic_api_impl/glic_api_host.ts
@@ -589,6 +589,10 @@
       };
     }
   }
+
+  glicBrowserDropScrollToHighlight(): void {
+    this.handler.dropScrollToHighlight();
+  }
 }
 
 export class GlicApiHost implements PostMessageRequestHandler {
diff --git a/chrome/browser/resources/glic/glic_api_impl/request_types.ts b/chrome/browser/resources/glic/glic_api_impl/request_types.ts
index 5dd39dc..ad9e336 100644
--- a/chrome/browser/resources/glic/glic_api_impl/request_types.ts
+++ b/chrome/browser/resources/glic/glic_api_impl/request_types.ts
@@ -172,6 +172,7 @@
   glicBrowserScrollTo: {
     request: {params: ScrollToParams},
   };
+  glicBrowserDropScrollToHighlight: {};
   glicBrowserSetSyntheticExperimentState: {
     request: {
       trialName: string,
@@ -316,6 +317,7 @@
     GetOsMicrophonePermissionStatus: 0,
     GetZeroStateSuggestionsForFocusedTab: 0,
     SetClosedCaptioningSetting: 0,
+    DropScrollToHighlight: 0,
   };
   return apiRequestTypes;
   // LINT.ThenChange(//tools/metrics/histograms/metadata/glic/histograms.xml:ApiRequestType)
diff --git a/chrome/browser/resources/intro/default_browser/app.html.ts b/chrome/browser/resources/intro/default_browser/app.html.ts
index 56cc5039..c3f25a02 100644
--- a/chrome/browser/resources/intro/default_browser/app.html.ts
+++ b/chrome/browser/resources/intro/default_browser/app.html.ts
@@ -18,8 +18,8 @@
       <img id="default-browser-frame" alt="">
       <img id="product-logo" src="images/product-logo.svg" alt="">
     </div>
-    <h1 class="title">$i18n{defaultBrowserTitle}</h1>
-    <p class="subtitle">$i18n{defaultBrowserSubtitle}</p>
+    <h1 class="title">${this.getTitle()}</h1>
+    <p class="subtitle">${this.getSubtitle()}</p>
   </div>
 </div>
 
diff --git a/chrome/browser/resources/intro/default_browser/app.ts b/chrome/browser/resources/intro/default_browser/app.ts
index cc1b3e7f..93143813 100644
--- a/chrome/browser/resources/intro/default_browser/app.ts
+++ b/chrome/browser/resources/intro/default_browser/app.ts
@@ -2,9 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import '/strings.m.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 
 import {WebUiListenerMixinLit} from 'chrome://resources/cr_elements/web_ui_listener_mixin_lit.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
 import {CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js';
 
 import {getCss} from './app.css.js';
@@ -57,6 +59,13 @@
     this.anyButtonClicked_ = false;
   }
 
+  protected getTitle() {
+    return loadTimeData.getString('defaultBrowserTitle');
+  }
+  protected getSubtitle() {
+    return loadTimeData.getString('defaultBrowserSubtitle');
+  }
+
   /**
    * Disable buttons if a button was clicked.
    */
diff --git a/chrome/browser/resources/on_device_internals/tools.html.ts b/chrome/browser/resources/on_device_internals/tools.html.ts
index c74298a..19f63f5 100644
--- a/chrome/browser/resources/on_device_internals/tools.html.ts
+++ b/chrome/browser/resources/on_device_internals/tools.html.ts
@@ -90,7 +90,7 @@
         <cr-icon icon="cr:add" slot="prefix-icon"></cr-icon>
         Add audio
       </cr-button>
-      <input id="audioInput" type="file">
+      <input id="audioInput" type="file" accept="audio/*">
     </div>
     ${this.audioFile_ ? html`
       <cr-button class="floating-button" @click="${this.onRemoteAudioClick_}">
diff --git a/chrome/browser/resources/pdf/elements/ink_text_box.ts b/chrome/browser/resources/pdf/elements/ink_text_box.ts
index 0595fa5a..110b07d 100644
--- a/chrome/browser/resources/pdf/elements/ink_text_box.ts
+++ b/chrome/browser/resources/pdf/elements/ink_text_box.ts
@@ -347,6 +347,16 @@
     this.pageNumber_ = data.annotation.pageNumber;
     this.textOrientation_ = data.annotation.textOrientation;
     this.updateTextAttributes_(data.annotation.textAttributes);
+
+    this.focusTextboxWhenReady_();
+  }
+
+  private async focusTextboxWhenReady_() {
+    await this.updateComplete;
+    setTimeout(() => {
+      this.$.textbox.focus();
+      this.fire('textbox-focused-for-test');
+    }, 0);
   }
 
   private onViewportChanged_(update: ViewportParams) {
diff --git a/chrome/browser/resources/pdf/ink2_manager.ts b/chrome/browser/resources/pdf/ink2_manager.ts
index d5419af..70f3538 100644
--- a/chrome/browser/resources/pdf/ink2_manager.ts
+++ b/chrome/browser/resources/pdf/ink2_manager.ts
@@ -138,6 +138,10 @@
     this.viewport_ = viewport;
   }
 
+  resetAnnotationIdForTest() {
+    this.nextAnnotationId_ = 0;
+  }
+
   private isClickOnScrollbar_(location: Point): boolean {
     assert(this.viewport_);
     const hasScrollbars = this.viewport_.documentHasScrollbars();
@@ -155,14 +159,20 @@
 
   // Initialize a text annotation at `location` in screen coordinates.
   // No-op if there is no PDF page at `location`.
-  initializeTextAnnotation(location: Point) {
+  // If location is not provided, creates the annotation at the center of
+  // the visible portion of the most visible page.
+  initializeTextAnnotation(location?: Point) {
     assert(this.isTextInitializationComplete());
     assert(this.viewport_);
 
-    // Only actually compute the page if the click isn't on a scrollbar.
-    const page = this.isClickOnScrollbar_(location) ?
-        -1 :
-        this.viewport_.getPageAtPoint(location);
+    let page = -1;
+    if (!location) {
+      page = this.viewport_.getMostVisiblePage();
+    } else if (!this.isClickOnScrollbar_(location)) {
+      // Only actually compute the page if the click isn't on a scrollbar.
+      page = this.viewport_.getPageAtPoint(location);
+    }
+
     if (page === -1) {
       // In any case where we ignore the click, blur the textbox. Otherwise,
       // the textarea will remain in focus and will continue handling all
@@ -173,6 +183,20 @@
     }
 
     const pageDimensions = this.viewport_.getPageScreenRect(page);
+    // Set location to the middle of the visible portion of the page.
+    if (!location) {
+      const minX = Math.max(pageDimensions.x, 0);
+      const minY = Math.max(pageDimensions.y, 0);
+      const maxX = Math.min(
+          pageDimensions.x + pageDimensions.width, this.viewport_.size.width);
+      const maxY = Math.min(
+          pageDimensions.y + pageDimensions.height, this.viewport_.size.height);
+      location = {
+        x: Math.max(0, (minX + maxX) / 2 - DEFAULT_TEXTBOX_WIDTH / 2),
+        y: Math.max(0, (minY + maxY) / 2 - DEFAULT_TEXTBOX_HEIGHT / 2),
+      };
+    }
+
     // Is the click in an existing box?
     let existing = null;
     // Get the annotations for the current page.
diff --git a/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.ts b/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.ts
index 694f2da..1b3f68d 100644
--- a/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.ts
+++ b/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.ts
@@ -201,6 +201,10 @@
       }
       return;
 
+    // <if expr="enable_pdf_ink2">
+    case 'Enter':
+      // Enter is used to create new text annotations.
+    // </if>
     case 'Escape':
     case 'Tab':
       // Print Preview is interested in Escape and Tab.
diff --git a/chrome/browser/resources/pdf/pdf_viewer.ts b/chrome/browser/resources/pdf/pdf_viewer.ts
index edf43a75..0c87709 100644
--- a/chrome/browser/resources/pdf/pdf_viewer.ts
+++ b/chrome/browser/resources/pdf/pdf_viewer.ts
@@ -464,6 +464,13 @@
           e.preventDefault();
         }
         return;
+      // <if expr="enable_pdf_ink2">
+      case 'Enter':
+        if ((e as ExtendedKeyEvent).fromPlugin &&
+            this.isInTextAnnotationMode_()) {
+          Ink2Manager.getInstance().initializeTextAnnotation();
+        }
+        // </if>
     }
 
     // Handle toolbar related key events.
diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts
index d3c5326..edae526 100644
--- a/chrome/browser/resources/settings/site_settings/constants.ts
+++ b/chrome/browser/resources/settings/site_settings/constants.ts
@@ -113,7 +113,7 @@
   INCOGNITO_ONLY = 2,
   LIMITED = 3,
 }
-// LINT.ThenChange(/tools/metrics/histograms/enums.xml:CookieControlsMode, /components/content_settings/core/browser/cookie_settings.h:CookieControlsMode)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:CookieControlsMode, //components/content_settings/core/browser/cookie_settings.h:CookieControlsMode)
 
 /**
  * Contains the possible sources of a ContentSetting.
diff --git a/chrome/browser/resources/side_panel/read_anything/common.ts b/chrome/browser/resources/side_panel/read_anything/common.ts
index d064568..4f3cfa9 100644
--- a/chrome/browser/resources/side_panel/read_anything/common.ts
+++ b/chrome/browser/resources/side_panel/read_anything/common.ts
@@ -64,7 +64,7 @@
 
 export function openMenu(
     menuToOpen: CrActionMenuElement, target: HTMLElement,
-    showAtConfig?: {minX: number, maxX: number}) {
+    showAtConfig?: {minX: number, maxX: number}, onShow?: () => void) {
   // The button should stay active while the menu is open and deactivate when
   // the menu closes.
   menuToOpen.addEventListener('close', () => {
@@ -90,6 +90,9 @@
                 noOffset: true,
               },
               showAtConfig));
+      if (onShow) {
+        onShow();
+      }
     });
   });
 }
diff --git a/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.css b/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.css
index 7e47f2a2..0f63a89 100644
--- a/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.css
+++ b/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.css
@@ -92,6 +92,7 @@
   overflow: hidden;
   padding-inline-end: 16px;
   text-overflow: ellipsis;
+  white-space: nowrap;
 }
 
 .item-hidden-true {
diff --git a/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.ts b/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.ts
index 3ae41337..0464eb6 100644
--- a/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.ts
+++ b/chrome/browser/resources/side_panel/read_anything/voice_selection_menu.ts
@@ -155,18 +155,20 @@
     this.notificationManager_.addListener(this);
 
     const menu = this.$.voiceSelectionMenu.get();
-    openMenu(menu, targetElement, {
-      minX: this.spBodyPadding_,
-      maxX: document.body.clientWidth - this.spBodyPadding_,
-    });
+    openMenu(
+        menu, targetElement, {
+          minX: this.spBodyPadding_,
+          maxX: document.body.clientWidth - this.spBodyPadding_,
+        },
+        this.onMenuShown.bind(this));
+  }
 
-    // Scroll to the selected voice.
-    requestAnimationFrame(() => {
-      this.fire(ToolbarEvent.VOICE_MENU_OPEN);
-      const selectedItem =
-          menu.querySelector<HTMLElement>('.item-hidden-false.check-mark');
-      selectedItem?.scrollIntoViewIfNeeded();
-    });
+  private onMenuShown() {
+    this.fire(ToolbarEvent.VOICE_MENU_OPEN);
+    const selectedItem =
+        this.$.voiceSelectionMenu.get().querySelector<HTMLElement>(
+            '.item-hidden-false.check-mark');
+    selectedItem?.scrollIntoViewIfNeeded();
   }
 
   protected voiceItemTabIndex_(groupIndex: number, voiceIndex: number) {
diff --git a/chrome/browser/sync/test/integration/BUILD.gn b/chrome/browser/sync/test/integration/BUILD.gn
index d719c81..8b0ecd6a 100644
--- a/chrome/browser/sync/test/integration/BUILD.gn
+++ b/chrome/browser/sync/test/integration/BUILD.gn
@@ -2,7 +2,6 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("sync_integration_tests.gni")
 if (is_android) {
   import("//build/config/android/rules.gni")
 } else {
@@ -43,8 +42,32 @@
     "//components/version_info",
   ]
 
-  sources = sync_integration_tests_sources
+  sources = [
+    "single_client_autofill_profile_sync_test.cc",
+    "single_client_bookmarks_sync_test.cc",
+    "single_client_collaboration_group_sync_test.cc",
+    "single_client_contact_info_sync_test.cc",
+    "single_client_custom_passphrase_sync_test.cc",
+    "single_client_device_info_sync_test.cc",
+    "single_client_history_delete_directives_sync_test.cc",
+    "single_client_history_sync_test.cc",
+    "single_client_offer_sync_test.cc",
+    "single_client_plus_address_setting_sync_test.cc",
+    "single_client_plus_address_sync_test.cc",
+    "single_client_preferences_sync_test.cc",
+    "single_client_reading_list_sync_test.cc",
+    "single_client_shared_tab_group_data_sync_test.cc",
+    "single_client_standalone_transport_sync_test.cc",
+    "single_client_sync_invalidations_test.cc",
+    "sync_exponential_backoff_test.cc",
 
+    # TODO(crbug.com/393119606): After enough of the implementation is ready
+    # (CL #N), add integration tests. Careful, sync_integration_tests runs in CQ
+    # but android_sync_integration_tests do not.
+    # TODO(crbug.com/397767033): After enough of the implementation is ready
+    # (CL #N), add integration tests. Careful, sync_integration_tests runs in CQ
+    # but android_sync_integration_tests do not.
+  ]
   data = [ "//chrome/test/data/sync/" ]
 
   if (is_android) {
@@ -75,6 +98,102 @@
       "$root_gen_dir/components/dev_ui_components_resources.pak",
     ]
   } else {  # !is_android
+    sources += [
+      "apps_sync_test_base.cc",
+      "apps_sync_test_base.h",
+      "enable_disable_test.cc",
+      "local_sync_test.cc",
+      "migration_test.cc",
+      "password_manager_sync_test.cc",
+      "single_client_app_settings_sync_test.cc",
+      "single_client_common_sync_test.cc",
+      "single_client_extension_apps_sync_test.cc",
+      "single_client_extensions_sync_test.cc",
+      "single_client_incoming_password_sharing_invitation_test.cc",
+      "single_client_nigori_sync_test.cc",
+      "single_client_outgoing_password_sharing_invitation_test.cc",
+      "single_client_password_sharing_policy_test.cc",
+      "single_client_passwords_sync_test.cc",
+      "single_client_polling_sync_test.cc",
+      "single_client_product_specifications_sync_test.cc",
+      "single_client_saved_tab_groups_sync_test.cc",
+      "single_client_search_engines_sync_test.cc",
+      "single_client_secondary_account_sync_test.cc",
+      "single_client_send_tab_to_self_sync_test.cc",
+      "single_client_sessions_sync_test.cc",
+      "single_client_sharing_message_sync_test.cc",
+      "single_client_themes_sync_test.cc",
+      "single_client_user_consents_sync_test.cc",
+      "single_client_user_events_sync_test.cc",
+      "single_client_valuables_sync_test.cc",
+      "single_client_wallet_credential_sync_test.cc",
+      "single_client_wallet_sync_test.cc",
+      "single_client_web_apps_sync_generated_icon_fix_sync_test.cc",
+      "single_client_web_apps_sync_test.cc",
+      "single_client_webauthn_credentials_sync_test.cc",
+      "sync_auth_test.cc",
+      "sync_errors_test.cc",
+
+      # Tests with two clients can't run on Android.
+      "two_client_app_settings_sync_test.cc",
+      "two_client_autocomplete_sync_test.cc",
+      "two_client_autofill_sync_test.cc",
+      "two_client_bookmarks_sync_test.cc",
+      "two_client_contact_info_sync_test.cc",
+      "two_client_custom_passphrase_sync_test.cc",
+      "two_client_extension_apps_sync_test.cc",
+      "two_client_extension_settings_sync_test.cc",
+      "two_client_extensions_sync_test.cc",
+      "two_client_history_sync_test.cc",
+      "two_client_passwords_sync_test.cc",
+      "two_client_power_bookmarks_sync_test.cc",
+      "two_client_preferences_sync_test.cc",
+      "two_client_search_engines_sync_test.cc",
+      "two_client_send_tab_to_self_sync_test.cc",
+      "two_client_sessions_sync_test.cc",
+      "two_client_shared_tab_group_data_sync_test.cc",
+      "two_client_themes_sync_test.cc",
+      "two_client_user_events_sync_test.cc",
+      "two_client_wallet_credential_sync_test.cc",
+      "two_client_wallet_sync_test.cc",
+      "two_client_web_apps_bmo_sync_test.cc",
+      "two_client_web_apps_generated_icon_fix_test.cc",
+      "two_client_web_apps_integration_test.cc",
+      "two_client_web_apps_integration_test_base.cc",
+      "two_client_web_apps_integration_test_base.h",
+      "two_client_web_apps_sync_test.cc",
+      "two_client_webauthn_credentials_sync_test.cc",
+      "web_apps_sync_test_base.cc",
+      "web_apps_sync_test_base.h",
+    ]
+    if (!is_mac) {
+      # Dictionary sync is disabled on Mac.
+      sources += [
+        "single_client_dictionary_sync_test.cc",
+        "two_client_dictionary_sync_test.cc",
+      ]
+    }
+    if (is_win || is_mac || is_linux) {
+      sources += [ "two_client_web_apps_integration_test_mac_win_linux.cc" ]
+    }
+    if (is_win || is_linux) {
+      sources += [ "two_client_web_apps_integration_test_win_linux.cc" ]
+    }
+    if (is_mac) {
+      sources += [ "two_client_web_apps_integration_test_mac.cc" ]
+    }
+    if (is_win) {
+      sources += [ "two_client_web_apps_integration_test_win.cc" ]
+    }
+    if (is_chromeos) {
+      sources += [ "two_client_web_apps_integration_test_cros.cc" ]
+    }
+    if (!is_chromeos) {
+      sources += [
+        "select_type_and_migrate_local_data_items_when_active_sync_test.cc",
+      ]
+    }
+
     deps += [
       "//chrome:packed_resources",
       "//chrome:resources",
diff --git a/chrome/browser/sync/test/integration/sync_integration_tests.gni b/chrome/browser/sync/test/integration/sync_integration_tests.gni
deleted file mode 100644
index 93b69a6..0000000
--- a/chrome/browser/sync/test/integration/sync_integration_tests.gni
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 2021 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-sync_integration_tests_sources = [
-  "//chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_collaboration_group_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_contact_info_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_device_info_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_history_delete_directives_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_history_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_offer_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_plus_address_setting_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_plus_address_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_preferences_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_reading_list_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_shared_tab_group_data_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc",
-  "//chrome/browser/sync/test/integration/single_client_sync_invalidations_test.cc",
-  "//chrome/browser/sync/test/integration/sync_exponential_backoff_test.cc",
-
-  # TODO(crbug.com/393119606): After enough of the implementation is ready
-  # (CL #N), add integration tests. Careful, sync_integration_tests runs in CQ
-  # but android_sync_integration_tests do not.
-  # TODO(crbug.com/397767033): After enough of the implementation is ready
-  # (CL #N), add integration tests. Careful, sync_integration_tests runs in CQ
-  # but android_sync_integration_tests do not.
-]
-if (!is_android) {
-  sync_integration_tests_sources += [
-    "//chrome/browser/sync/test/integration/apps_sync_test_base.cc",
-    "//chrome/browser/sync/test/integration/apps_sync_test_base.h",
-    "//chrome/browser/sync/test/integration/enable_disable_test.cc",
-    "//chrome/browser/sync/test/integration/local_sync_test.cc",
-    "//chrome/browser/sync/test/integration/migration_test.cc",
-    "//chrome/browser/sync/test/integration/password_manager_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_app_settings_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_common_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_extension_apps_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_extensions_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_incoming_password_sharing_invitation_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_outgoing_password_sharing_invitation_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_password_sharing_policy_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_polling_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_product_specifications_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_saved_tab_groups_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_send_tab_to_self_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_sharing_message_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_themes_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_valuables_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_wallet_credential_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_web_apps_sync_generated_icon_fix_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_web_apps_sync_test.cc",
-    "//chrome/browser/sync/test/integration/single_client_webauthn_credentials_sync_test.cc",
-    "//chrome/browser/sync/test/integration/sync_auth_test.cc",
-    "//chrome/browser/sync/test/integration/sync_errors_test.cc",
-
-    # Tests with two clients can't run on Android.
-    "//chrome/browser/sync/test/integration/two_client_app_settings_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_autocomplete_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_contact_info_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_custom_passphrase_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_extension_apps_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_extension_settings_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_extensions_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_history_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_power_bookmarks_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_preferences_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_search_engines_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_send_tab_to_self_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_sessions_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_shared_tab_group_data_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_themes_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_user_events_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_wallet_credential_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_bmo_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_generated_icon_fix_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_base.cc",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_base.h",
-    "//chrome/browser/sync/test/integration/two_client_web_apps_sync_test.cc",
-    "//chrome/browser/sync/test/integration/two_client_webauthn_credentials_sync_test.cc",
-    "//chrome/browser/sync/test/integration/web_apps_sync_test_base.cc",
-    "//chrome/browser/sync/test/integration/web_apps_sync_test_base.h",
-  ]
-  if (!is_mac) {
-    # Dictionary sync is disabled on Mac.
-    sync_integration_tests_sources += [
-      "//chrome/browser/sync/test/integration/single_client_dictionary_sync_test.cc",
-      "//chrome/browser/sync/test/integration/two_client_dictionary_sync_test.cc",
-    ]
-  }
-}
-if (is_win || is_mac || is_linux) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac_win_linux.cc" ]
-}
-if (is_win || is_linux) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_win_linux.cc" ]
-}
-if (is_mac) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac.cc" ]
-}
-if (is_win) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_win.cc" ]
-}
-if (is_chromeos) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/two_client_web_apps_integration_test_cros.cc" ]
-}
-if (!is_chromeos && !is_android) {
-  sync_integration_tests_sources += [ "//chrome/browser/sync/test/integration/select_type_and_migrate_local_data_items_when_active_sync_test.cc" ]
-}
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.cc b/chrome/browser/sync_file_system/sync_file_system_service.cc
index 860fe8c9..73d2f18 100644
--- a/chrome/browser/sync_file_system/sync_file_system_service.cc
+++ b/chrome/browser/sync_file_system/sync_file_system_service.cc
@@ -20,7 +20,6 @@
 #include "base/memory/ref_counted.h"
 #include "base/observer_list.h"
 #include "base/task/single_thread_task_runner.h"
-#include "chrome/browser/apps/platform_apps/api/deprecation_features.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sync/sync_service_factory.h"
 #include "chrome/browser/sync_file_system/local/local_file_sync_service.h"
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index cc5375c..a0c464bd 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -3627,10 +3627,6 @@
   if (toolkit_views) {
     sources += [
       "bubble_anchor_util.h",
-      "sharing_hub/screenshot/screenshot_captured_bubble_controller.cc",
-      "sharing_hub/screenshot/screenshot_captured_bubble_controller.h",
-      "sharing_hub/sharing_hub_bubble_controller.h",
-      "sharing_hub/sharing_hub_bubble_view.h",
       "side_search/side_search_prefs.cc",
       "side_search/side_search_prefs.h",
       "sync/one_click_signin_links_delegate.h",
@@ -3916,8 +3912,6 @@
       "views/desktop_capture/desktop_media_source_view.h",
       "views/desktop_capture/desktop_media_tab_list.cc",
       "views/desktop_capture/desktop_media_tab_list.h",
-      "views/desktop_capture/rounded_corner_image_view.cc",
-      "views/desktop_capture/rounded_corner_image_view.h",
       "views/desktop_capture/screen_capture_permission_checker.cc",
       "views/desktop_capture/screen_capture_permission_checker.h",
       "views/desktop_capture/share_audio_view.cc",
@@ -4975,6 +4969,8 @@
       "//chrome/browser/ui/qrcode_generator:impl",
       "//chrome/browser/ui/send_tab_to_self",
       "//chrome/browser/ui/send_tab_to_self:impl",
+      "//chrome/browser/ui/sharing_hub",
+      "//chrome/browser/ui/sharing_hub:impl",
       "//chrome/browser/ui/views",
       "//chrome/browser/ui/views/bubble",
       "//chrome/browser/ui/views/download",
@@ -5043,6 +5039,7 @@
       "//chrome/browser/ui/views",
       "//chrome/browser/ui/views/bubble",
       "//chrome/browser/ui/commerce:impl",
+      "//chrome/browser/ui/sharing_hub:impl",
 
       # TODO(crbug.com/413572035): Remove circular dependency once/if
       # chrome_{typography,layout_provider} get modularized.
@@ -5072,15 +5069,7 @@
     }
 
     if (is_chromeos) {
-      sources += [
-        "sharing_hub/sharing_hub_bubble_controller_chromeos_impl.cc",
-        "sharing_hub/sharing_hub_bubble_controller_chromeos_impl.h",
-        "views/status_icons/status_tray_chromeos.cc",
-      ]
-
-      # TODO(crbug.com/419210492): Remove this dep when sharing_hub_bubble_controller_chromeos_impl.h (above)
-      # gets componentized.
-      public_deps += [ "//chrome/browser/sharesheet" ]
+      sources += [ "views/status_icons/status_tray_chromeos.cc" ]
 
       deps += [
         "//chromeos/ash/experiences/arc/intent_helper:arc_intent_helper_constants",
@@ -5171,8 +5160,6 @@
     if (!is_chromeos) {
       sources += [
         "idle_dialog.h",
-        "sharing_hub/sharing_hub_bubble_controller_desktop_impl.cc",
-        "sharing_hub/sharing_hub_bubble_controller_desktop_impl.h",
         "sync/sync_passphrase_dialog.cc",
         "sync/sync_passphrase_dialog.h",
         "views/accessibility/accessibility_focus_highlight.cc",
@@ -5335,6 +5322,7 @@
       "//chrome/browser/policy:policy_util",
       "//chrome/browser/profiles",
       "//chrome/browser/ui/extensions:extension_enable_flow_delegate",
+      "//chrome/browser/ui/webui/extensions_zero_state_promo:mojo_bindings",
       "//chrome/browser/web_applications",
       "//chrome/browser/web_applications/app_service",
       "//chrome/browser/web_share_target",
@@ -5459,6 +5447,10 @@
       "web_applications/webui_web_app_navigation_throttle.h",
       "webui/extensions/extension_basic_info.cc",
       "webui/extensions/extension_basic_info.h",
+      "webui/extensions_zero_state_promo/zero_state_promo_page_handler.cc",
+      "webui/extensions_zero_state_promo/zero_state_promo_page_handler.h",
+      "webui/extensions_zero_state_promo/zero_state_promo_ui.cc",
+      "webui/extensions_zero_state_promo/zero_state_promo_ui.h",
     ]
 
     if (is_mac) {
@@ -5602,10 +5594,6 @@
       "crypto_module_delegate_nss.h",
       "crypto_module_password_dialog_nss.cc",
       "crypto_module_password_dialog_nss.h",
-      "webui/certificate_manager_localized_strings_provider.cc",
-      "webui/certificate_manager_localized_strings_provider.h",
-      "webui/certificates_handler.cc",
-      "webui/certificates_handler.h",
     ]
 
     if (use_aura) {
@@ -5633,7 +5621,12 @@
       "webui/certificate_manager/user_cert_sources.cc",
       "webui/certificate_manager/user_cert_sources.h",
     ]
-    if (!is_chromeos) {
+    if (is_chromeos) {
+      sources += [
+        "webui/certificates_handler.cc",
+        "webui/certificates_handler.h",
+      ]
+    } else {
       sources += [
         "webui/certificate_manager/platform_cert_sources.cc",
         "webui/certificate_manager/platform_cert_sources.h",
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index 7278364..86a5966 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -4375,12 +4375,6 @@
       <message name="IDS_MENU_NEW_TAB_GROUP" desc="Menu item for opening a new tab group. [CHAR_LIMIT=27]">
         New tab group
       </message>
-      <message name="IDS_MENU_ADD_TO_GROUP" desc="Menu item for adding a tab to a group. [CHAR_LIMIT=27]">
-        Add to group
-      </message>
-      <message name="IDS_MENU_ADD_TO_NEW_GROUP" desc="Menu item for adding a tab to a new group. [CHAR_LIMIT=27]">
-        Add to new group
-      </message>
       <message name="IDS_MENU_BOOKMARKS" desc="Menu item for opening the bookmarks page that contains all the user's bookmarks. [CHAR_LIMIT=27]">
         Bookmarks
       </message>
@@ -4476,6 +4470,9 @@
       <message name="IDS_MENU_ADD_TAB_TO_NEW_GROUP" desc="Menu item for adding a tab to a new tab group.">
         Add tab to new group
       </message>
+      <message name="IDS_MENU_MOVE_TAB_TO_GROUP" desc="Menu item for moving a tab to another group.">
+        Move tab to group
+      </message>
       <message name="IDS_MENU_OPEN_WITH" desc="Menu item to open the content with another app.">
         Open with…
       </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_GROUP.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_GROUP.png.sha1
deleted file mode 100644
index 8c4e59d..0000000
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_GROUP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5b8eadad38af8929dacf3e16acdb4a9bc990c85c
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_NEW_GROUP.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_NEW_GROUP.png.sha1
deleted file mode 100644
index cb34f27..0000000
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_ADD_TO_NEW_GROUP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b24a769419194dbc56b4f44cf6436b7fd4b470ee
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_MOVE_TAB_TO_GROUP.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_MOVE_TAB_TO_GROUP.png.sha1
new file mode 100644
index 0000000..e8bff82
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MENU_MOVE_TAB_TO_GROUP.png.sha1
@@ -0,0 +1 @@
+6ccf44aea7419b2ab4026b4e9d176e92dc50887e
\ No newline at end of file
diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn
index 61d2aa6..47f925f2 100644
--- a/chrome/browser/ui/android/toolbar/BUILD.gn
+++ b/chrome/browser/ui/android/toolbar/BUILD.gn
@@ -240,6 +240,7 @@
       "java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java",
       "java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionsBridge.java",
       "java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManagerImpl.java",
+      "java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuButtonCoordinator.java",
     ]
   }
 }
@@ -314,6 +315,7 @@
     "java/res/drawable-xxxhdpi/incognito_simple.png",
     "java/res/drawable-xxxhdpi/incognito_small.png",
     "java/res/drawable-xxxhdpi/popup_bg_bottom.9.png",
+    "java/res/drawable/chrome_extension.xml",
     "java/res/drawable/home_surface_search_box_background.xml",
     "java/res/drawable/ic_close_all_tabs.xml",
     "java/res/drawable/ic_switch_out_of_incognito.xml",
diff --git a/chrome/browser/ui/android/toolbar/java/res/drawable/chrome_extension.xml b/chrome/browser/ui/android/toolbar/java/res/drawable/chrome_extension.xml
new file mode 100644
index 0000000..f08b267
--- /dev/null
+++ b/chrome/browser/ui/android/toolbar/java/res/drawable/chrome_extension.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright 2025 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760L120,608Q168,608 204,577.5Q240,547 240,500Q240,453 204,422.5Q168,392 120,392L120,240Q120,207 143.5,183.5Q167,160 200,160L360,160Q360,118 389,89Q418,60 460,60Q502,60 531,89Q560,118 560,160L720,160Q753,160 776.5,183.5Q800,207 800,240L800,400Q842,400 871,429Q900,458 900,500Q900,542 871,571Q842,600 800,600L800,760Q800,793 776.5,816.5Q753,840 720,840L200,840ZM200,760L720,760L720,240L200,240L200,328Q254,348 287,395Q320,442 320,500Q320,557 287,604Q254,651 200,672L200,760ZM460,500L460,500L460,500Q460,500 460,500Q460,500 460,500Q460,500 460,500L460,500L460,500Z"/>
+</vector>
\ No newline at end of file
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/extension_toolbar_container.xml b/chrome/browser/ui/android/toolbar/java/res/layout/extension_toolbar_container.xml
index 04f32ff9..dfd61af 100644
--- a/chrome/browser/ui/android/toolbar/java/res/layout/extension_toolbar_container.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/extension_toolbar_container.xml
@@ -7,6 +7,22 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
-    android:orientation="horizontal" />
+    android:orientation="horizontal" >
+
+    <LinearLayout
+        android:id="@+id/extension_action_list"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"/>
+
+    <org.chromium.ui.listmenu.ListMenuButton
+        android:id="@+id/extensions_menu_button"
+        style="@style/ToolbarHoverableButton"
+        android:src="@drawable/chrome_extension"
+        app:menuVerticalOverlapAnchor="false"
+        app:tint="@color/default_icon_color_tint_list"/>
+
+</LinearLayout>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarController.java
index ad60b79..bce4f97 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarController.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarController.java
@@ -117,11 +117,14 @@
     private final ControlContainer mControlContainer;
     private final ObservableSupplierImpl<Boolean> mSuppressToolbarSceneLayerSupplier;
     private final BrowserControlsSizer mBrowserControlsSizer;
+    private final ObservableSupplierImpl<Integer> mControlContainerHeightSupplier;
     private final ObservableSupplier<Boolean> mIsKeyboardAccessorySheetShowing;
     private final MiniOriginWindowInsetsAnimationListener mWindowInsetsAnimationListener;
+    private final Callback<Boolean> mAccessorySheetShowingObserver;
     private @MiniOriginState int mMiniOriginBarState = MiniOriginState.NOT_READY;
     private FrameLayout.LayoutParams mDefaultLocationBarLayoutParams;
     private final TouchEventObserver mTouchEventObserver;
+    private final InsetObserver mInsetObserver;
     private final int mDefaultLocationBarRightPadding;
     // The starting horizontal position of the location bar when the mini origin bar is in its
     // least-minimized state.
@@ -150,6 +153,7 @@
             BrowserControlsSizer browserControlsSizer,
             InsetObserver insetObserver,
             ObservableSupplierImpl<Integer> controlContainerTranslationSupplier,
+            ObservableSupplierImpl<Integer> controlContainerHeightSupplier,
             ObservableSupplier<Boolean> isKeyboardAccessorySheetShowing) {
         mLocationBar = locationBar;
         mIsFormFieldFocusedSupplier = isFormFieldFocusedSupplier;
@@ -158,7 +162,9 @@
         mControlContainer = controlContainer;
         mSuppressToolbarSceneLayerSupplier = suppressToolbarSceneLayerSupplier;
         mBrowserControlsSizer = browserControlsSizer;
+        mControlContainerHeightSupplier = controlContainerHeightSupplier;
         mIsKeyboardAccessorySheetShowing = isKeyboardAccessorySheetShowing;
+        mInsetObserver = insetObserver;
         mDefaultLocationBarRightPadding = mLocationBar.getContainerView().getPaddingRight();
         mDefaultLocationBarLayoutParams =
                 (FrameLayout.LayoutParams) mLocationBar.getContainerView().getLayoutParams();
@@ -177,7 +183,7 @@
                                                 : MiniOriginEvent.KEYBOARD_ANIMATION_ENDED),
                         this::updateAnimationProgress,
                         this::waitingForImeAnimationToStart);
-        insetObserver.addWindowInsetsAnimationListener(mWindowInsetsAnimationListener);
+        mInsetObserver.addWindowInsetsAnimationListener(mWindowInsetsAnimationListener);
 
         mIsFormFieldFocusedObserver =
                 (focused) -> {
@@ -210,12 +216,13 @@
                 };
         controlContainer.addTouchEventObserver(mTouchEventObserver);
 
-        mIsKeyboardAccessorySheetShowing.addObserver(
+        mAccessorySheetShowingObserver =
                 (showing) ->
                         updateMiniOriginBarState(
                                 showing
                                         ? MiniOriginEvent.ACCESSORY_SHEET_APPEARED
-                                        : MiniOriginEvent.ACCESSORY_SHEET_DISAPPEARED));
+                                        : MiniOriginEvent.ACCESSORY_SHEET_DISAPPEARED);
+        mIsKeyboardAccessorySheetShowing.addObserver(mAccessorySheetShowingObserver);
     }
 
     private void updateMiniOriginBarState(@MiniOriginEvent int event) {
@@ -271,6 +278,7 @@
 
         int newControlContainerHeight =
                 mContext.getResources().getDimensionPixelSize(R.dimen.mini_origin_bar_height);
+        mControlContainerHeightSupplier.set(newControlContainerHeight);
         mControlContainer.mutateLayoutParams().height = newControlContainerHeight;
         var minifiedLayoutParams =
                 new FrameLayout.LayoutParams(
@@ -304,6 +312,7 @@
         mControlContainer.toggleLocationBarOnlyMode(false);
 
         mControlContainer.mutateLayoutParams().height = LayoutParams.WRAP_CONTENT;
+        mControlContainerHeightSupplier.set(LayoutParams.WRAP_CONTENT);
 
         var locationBarView = mLocationBar.getContainerView();
         locationBarView.setLayoutParams(mDefaultLocationBarLayoutParams);
@@ -318,7 +327,9 @@
     public void destroy() {
         mKeyboardVisibilityDelegate.removeKeyboardVisibilityListener(mKeyboardVisibilityObserver);
         mIsFormFieldFocusedSupplier.removeObserver(mIsFormFieldFocusedObserver);
+        mIsKeyboardAccessorySheetShowing.removeObserver(mAccessorySheetShowingObserver);
         mBrowserControlsSizer.removeObserver(this);
+        mInsetObserver.removeWindowInsetsAnimationListener(mWindowInsetsAnimationListener);
     }
 
     @Override
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarControllerTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarControllerTest.java
index bcdc3f44..ee3deebe 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarControllerTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/MiniOriginBarControllerTest.java
@@ -81,6 +81,9 @@
             new ObservableSupplierImpl<>(false);
     ObservableSupplierImpl<Integer> mControlContainerTranslationSupplier =
             new ObservableSupplierImpl<>(0);
+
+    ObservableSupplierImpl<Integer> mControlContainerHeightSupplier =
+            new ObservableSupplierImpl<>(LayoutParams.WRAP_CONTENT);
     private final ObservableSupplierImpl<Boolean> mIsKeyboardAccessorySheetShowing =
             new ObservableSupplierImpl<>(false);
 
@@ -110,6 +113,7 @@
                         mBrowserControlsSizer,
                         mInsetObserver,
                         mControlContainerTranslationSupplier,
+                        mControlContainerHeightSupplier,
                         mIsKeyboardAccessorySheetShowing);
     }
 
@@ -133,6 +137,9 @@
                 mLayoutParamsCaptor.getValue().height);
         Assert.assertEquals(
                 MiniOriginState.SHOWING, mMiniOriginBarController.getCurrentStateForTesting());
+        Assert.assertEquals(
+                mContext.getResources().getDimensionPixelSize(R.dimen.mini_origin_bar_height),
+                mControlContainerHeightSupplier.get().intValue());
 
         mKeyboardVisibilityDelegate.setVisibilityForTests(false);
         verify(mLocationBar).setShowOriginOnly(false);
@@ -140,6 +147,8 @@
         assertEquals(LayoutParams.WRAP_CONTENT, mControlContainerLayoutParams.height);
         assertEquals(Gravity.TOP, mLocationBarLayoutParams.gravity);
         Assert.assertEquals(
+                LayoutParams.WRAP_CONTENT, mControlContainerHeightSupplier.get().intValue());
+        Assert.assertEquals(
                 MiniOriginState.READY, mMiniOriginBarController.getCurrentStateForTesting());
     }
 
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java
index 9ae1ba4..8a59985 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java
@@ -17,6 +17,7 @@
 import androidx.coordinatorlayout.widget.CoordinatorLayout;
 import androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams;
 
+import org.chromium.base.Callback;
 import org.chromium.base.DeviceInfo;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.supplier.ObservableSupplier;
@@ -36,6 +37,7 @@
 import org.chromium.chrome.browser.toolbar.settings.AddressBarPreference;
 import org.chromium.components.embedder_support.util.UrlUtilities;
 import org.chromium.ui.KeyboardVisibilityDelegate;
+import org.chromium.ui.KeyboardVisibilityDelegate.KeyboardVisibilityListener;
 import org.chromium.ui.base.DeviceFormFactor;
 
 import java.lang.annotation.Retention;
@@ -90,11 +92,27 @@
     private final Context mContext;
     private final ObservableSupplier<Integer> mKeyboardAccessoryHeightSupplier;
     private final ObservableSupplier<Integer> mControlContainerTranslationSupplier;
+    private final ObservableSupplier<Integer> mControlContainerHeightSupplier;
     private final Handler mHandler;
     @LayerVisibility private int mLayerVisibility;
+    private int mControlContainerHeight;
     private final BottomControlsLayerWithOffset mBottomToolbarLayer;
     private final BottomControlsLayerWithOffset mProgressBarLayer;
 
+    private final Callback<Boolean> mIsNtpShowingObserver;
+    private final Callback<Boolean> mIsTabSwitcherFinishedShowingObserver;
+    private final Callback<Boolean> mIsOmniboxFocusedObserver;
+    private final Callback<Boolean> mIsFormFieldFocusedObserver;
+    private final Callback<Boolean> mIsFindInPageShowingObserver;
+    private final KeyboardVisibilityListener mKeyboardVisibilityListener;
+    private final Callback<Integer> mKeyboardAccessoryToolbarCallback;
+    private final Callback<Integer> mKeyboardAccessoryProgressBarCallback;
+    private final KeyboardVisibilityListener mKeyboardVisibilityViewOffsetCallback;
+    private final Callback<Boolean> mFormFieldViewOffsetCallback;
+    private final Callback<Integer> mControlContainerTranslationCallback;
+    private final Callback<Integer> mControlContainerHeightCallback;
+    private final SharedPreferences mSharedPreferences;
+
     @ControlsPosition private int mCurrentPosition;
     private final int mHairlineHeight;
 
@@ -115,6 +133,9 @@
      * @param keyboardAccessoryHeightSupplier Supplier of the height of the keyboard accessory,
      *     which stacks on top of the soft keyboard.
      * @param controlContainer The control container for the current context.
+     * @param controlContainerHeightSupplier Supplier of an override current height of the control
+     *     container. If the value is equal to LayoutParams.WRAP_CONTENT, it should be understood as
+     *     meaning that the height should no longer be overridden.
      * @param bottomControlsStacker {@link BottomControlsStacker} used to harmonize the position of
      *     the bottom toolbar with other bottom-anchored UI.
      */
@@ -133,6 +154,7 @@
             ObservableSupplierImpl<Integer> browserControlsOffsetSupplier,
             View toolbarProgressBarContainer,
             ObservableSupplier<Integer> controlContainerTranslationSupplier,
+            ObservableSupplier<Integer> controlContainerHeightSupplier,
             Handler handler,
             Context context) {
         mBrowserControlsSizer = browserControlsSizer;
@@ -148,20 +170,30 @@
         mBrowserControlsOffsetSupplier = browserControlsOffsetSupplier;
         mToolbarProgressBarContainer = toolbarProgressBarContainer;
         mControlContainerTranslationSupplier = controlContainerTranslationSupplier;
+        mControlContainerHeightSupplier = controlContainerHeightSupplier;
         mContext = context;
         mCurrentPosition = mBrowserControlsSizer.getControlsPosition();
 
         mHairlineHeight =
                 context.getResources().getDimensionPixelSize(R.dimen.toolbar_hairline_height);
-        mIsNtpShowingSupplier.addObserver((showing) -> updateCurrentPosition());
-        mIsTabSwitcherFinishedShowingSupplier.addObserver((showing) -> updateCurrentPosition());
-        mIsOmniboxFocusedSupplier.addObserver((focused) -> updateCurrentPosition());
-        mIsFormFieldFocusedSupplier.addObserver(
-                (focused) -> updateCurrentPosition(/* formFieldStateChanged= */ true, false));
-        mIsFindInPageShowingSupplier.addObserver((showing) -> updateCurrentPosition());
-        mKeyboardVisibilityDelegate.addKeyboardVisibilityListener(
-                (showing) -> updateCurrentPosition(/* formFieldStateChanged= */ true, false));
-        sharedPreferences.registerOnSharedPreferenceChangeListener(this);
+
+        mIsNtpShowingObserver = (showing) -> updateCurrentPosition();
+        mIsTabSwitcherFinishedShowingObserver = (showing) -> updateCurrentPosition();
+        mIsOmniboxFocusedObserver = (focused) -> updateCurrentPosition();
+        mIsFormFieldFocusedObserver =
+                (focused) -> updateCurrentPosition(/* formFieldStateChanged= */ true, false);
+        mIsFindInPageShowingObserver = (showing) -> updateCurrentPosition();
+        mKeyboardVisibilityListener =
+                (showing) -> updateCurrentPosition(/* formFieldStateChanged= */ true, false);
+
+        mIsNtpShowingSupplier.addObserver(mIsNtpShowingObserver);
+        mIsTabSwitcherFinishedShowingSupplier.addObserver(mIsTabSwitcherFinishedShowingObserver);
+        mIsOmniboxFocusedSupplier.addObserver(mIsOmniboxFocusedObserver);
+        mIsFormFieldFocusedSupplier.addObserver(mIsFormFieldFocusedObserver);
+        mIsFindInPageShowingSupplier.addObserver(mIsFindInPageShowingObserver);
+        mKeyboardVisibilityDelegate.addKeyboardVisibilityListener(mKeyboardVisibilityListener);
+        mSharedPreferences = sharedPreferences;
+        mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
         recordStartupPosition(isToolbarConfiguredToShowOnTop());
 
         mLayerVisibility = LayerVisibility.HIDDEN;
@@ -186,7 +218,7 @@
 
                     @Override
                     public int getHeight() {
-                        return mControlContainer.getToolbarHeight();
+                        return mControlContainerHeight;
                     }
 
                     @Override
@@ -243,20 +275,48 @@
 
         mBottomControlsStacker.addLayer(mBottomToolbarLayer);
         mBottomControlsStacker.addLayer(mProgressBarLayer);
-        mKeyboardAccessoryHeightSupplier.addObserver(
-                (height) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView()));
-        mKeyboardAccessoryHeightSupplier.addObserver(
-                (height) -> updateViewOffset(mProgressBarLayer, mToolbarProgressBarContainer));
+
+        mKeyboardAccessoryToolbarCallback =
+                (height) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView());
+        mKeyboardAccessoryProgressBarCallback =
+                (height) -> updateViewOffset(mProgressBarLayer, mToolbarProgressBarContainer);
+        mKeyboardVisibilityViewOffsetCallback =
+                (showing) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView());
+        mFormFieldViewOffsetCallback =
+                (focused) -> updateViewOffset(mProgressBarLayer, mToolbarProgressBarContainer);
+        mControlContainerTranslationCallback =
+                (offset) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView());
+        mControlContainerHeightCallback = this::updateControlContainerHeight;
+        mControlContainerHeightSupplier.addSyncObserverAndCallIfNonNull(
+                mControlContainerHeightCallback);
+
+        mKeyboardAccessoryHeightSupplier.addObserver(mKeyboardAccessoryToolbarCallback);
+        mKeyboardAccessoryHeightSupplier.addObserver(mKeyboardAccessoryProgressBarCallback);
         mKeyboardVisibilityDelegate.addKeyboardVisibilityListener(
-                (showing) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView()));
-        mIsFormFieldFocusedSupplier.addObserver(
-                (focused) -> updateViewOffset(mProgressBarLayer, mToolbarProgressBarContainer));
-        mControlContainerTranslationSupplier.addObserver(
-                (offset) -> updateViewOffset(mBottomToolbarLayer, mControlContainer.getView()));
+                mKeyboardVisibilityViewOffsetCallback);
+        mIsFormFieldFocusedSupplier.addObserver(mFormFieldViewOffsetCallback);
+        mControlContainerTranslationSupplier.addObserver(mControlContainerTranslationCallback);
         updateCurrentPosition();
         mHandler = handler;
     }
 
+    public void destroy() {
+        mIsNtpShowingSupplier.removeObserver(mIsNtpShowingObserver);
+        mIsTabSwitcherFinishedShowingSupplier.removeObserver(mIsTabSwitcherFinishedShowingObserver);
+        mIsOmniboxFocusedSupplier.removeObserver(mIsOmniboxFocusedObserver);
+        mIsFormFieldFocusedSupplier.removeObserver(mIsFormFieldFocusedObserver);
+        mIsFindInPageShowingSupplier.removeObserver(mIsFindInPageShowingObserver);
+        mKeyboardVisibilityDelegate.removeKeyboardVisibilityListener(mKeyboardVisibilityListener);
+        mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
+        mKeyboardAccessoryHeightSupplier.removeObserver(mKeyboardAccessoryToolbarCallback);
+        mKeyboardAccessoryHeightSupplier.removeObserver(mKeyboardAccessoryProgressBarCallback);
+        mKeyboardVisibilityDelegate.removeKeyboardVisibilityListener(
+                mKeyboardVisibilityViewOffsetCallback);
+        mIsFormFieldFocusedSupplier.removeObserver(mFormFieldViewOffsetCallback);
+        mControlContainerTranslationSupplier.removeObserver(mControlContainerTranslationCallback);
+        mControlContainerHeightSupplier.removeObserver(mControlContainerHeightCallback);
+    }
+
     /**
      * Returns whether the given {context, device, cct-ness} combo is eligible for toolbar position
      * customization.
@@ -484,6 +544,16 @@
         }
     }
 
+    private void updateControlContainerHeight(int height) {
+        if (height == LayoutParams.WRAP_CONTENT) {
+            mControlContainerHeight = mControlContainer.getToolbarHeight();
+        } else {
+            mControlContainerHeight = height;
+        }
+
+        mBottomControlsStacker.requestLayerUpdate(false);
+    }
+
     /** Returns whether the toolbar will be shown on top for the supplied tab. */
     public static boolean shouldShowToolbarOnTop(Tab tab) {
         boolean isRegularNtp =
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java
index 322cee6..6d91fa7 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java
@@ -257,6 +257,8 @@
             new ObservableSupplierImpl<>(0);
     private final ObservableSupplierImpl<Integer> mControlContainerTranslationSupplier =
             new ObservableSupplierImpl<>(0);
+    private final ObservableSupplierImpl<Integer> mControlContainerHeightSupplier =
+            new ObservableSupplierImpl<>(LayoutParams.WRAP_CONTENT);
     private HistogramWatcher mStartupExpectation;
     private WindowAndroid mWindowAndroid;
 
@@ -322,6 +324,7 @@
                         mBottomToolbarOffsetSupplier,
                         mProgressBarContainer,
                         mControlContainerTranslationSupplier,
+                        mControlContainerHeightSupplier,
                         new Handler(Looper.getMainLooper()),
                         mContext);
     }
@@ -852,6 +855,26 @@
         assertControlsAtTop();
     }
 
+    @Test
+    @EnableFeatures({ChromeFeatureList.ANDROID_BOTTOM_TOOLBAR, ChromeFeatureList.MINI_ORIGIN_BAR})
+    public void testControlContainerHeightAdjustments() {
+        setUserToolbarAnchorPreference(/* showToolbarOnTop= */ false);
+        mIsFormFieldFocused.onNodeAttributeUpdated(true, false);
+        mKeyboardVisibilityDelegate.setVisibilityForTests(true);
+        assertControlsAtBottom();
+        assertEquals(TOOLBAR_HEIGHT, mBottomControlsStacker.getTotalHeight());
+
+        mControlContainerHeightSupplier.set(15);
+        assertEquals(15, mBottomControlsStacker.getTotalHeight());
+    }
+
+    @Test
+    public void testDestroy() {
+        mController.destroy();
+        setUserToolbarAnchorPreference(/* showToolbarOnTop= */ false);
+        assertControlsAtTop();
+    }
+
     private void assertControlsAtBottom() {
         assertEquals(ControlsPosition.BOTTOM, mBrowserControlsSizer.getControlsPosition());
         assertEquals(0, mBrowserControlsSizer.getTopControlsHeight());
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarTest.java
index 5971b59d..16b85cb 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarTest.java
@@ -393,8 +393,6 @@
         Drawable drawable = mProgressBar.getDrawable();
         assertTrue(drawable instanceof LayerDrawable);
         LayerDrawable layerDrawable = (LayerDrawable) drawable;
-        assertEquals(2, layerDrawable.getNumberOfLayers());
-        assertTrue(layerDrawable.getDrawable(0) instanceof ClipDrawable);
-        assertTrue(layerDrawable.getDrawable(1) instanceof ClipDrawable);
+        assertTrue(layerDrawable.getNumberOfLayers() > 1);
     }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
index 4f12fd69..5ff0ad77 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
@@ -6,7 +6,6 @@
 
 import android.content.Context;
 import android.view.LayoutInflater;
-import android.view.ViewStub;
 import android.widget.LinearLayout;
 
 import org.chromium.base.lifetime.Destroyable;
@@ -34,10 +33,9 @@
 
     public ExtensionActionListCoordinator(
             Context context,
-            ViewStub containerStub,
+            LinearLayout container,
             ObservableSupplier<Profile> profileSupplier,
             ObservableSupplier<Tab> currentTabSupplier) {
-        LinearLayout container = (LinearLayout) containerStub.inflate();
         ModelList models = new ModelList();
         mMediator = new ExtensionActionListMediator(models, profileSupplier, currentTabSupplier);
         mAdapter =
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManager.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManager.java
index 5b4915a..15f27d8 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManager.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManager.java
@@ -14,6 +14,7 @@
 import org.chromium.build.annotations.Nullable;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.theme.ThemeColorProvider;
 
 /** Provides extension-related buttons for {@link ToolbarManager}. */
 @NullMarked
@@ -23,7 +24,8 @@
             Context context,
             ViewStub extensionToolbarStub,
             ObservableSupplier<Profile> profileSupplier,
-            ObservableSupplier<Tab> currentTabSupplier);
+            ObservableSupplier<Tab> currentTabSupplier,
+            ThemeColorProvider themeColorProvider);
 
     /** Instantiates the implementation of {@link ExtensionToolbarManager} if it is available. */
     @Nullable
@@ -31,13 +33,19 @@
             Context context,
             ViewStub extensionToolbarStub,
             ObservableSupplier<Profile> profileSupplier,
-            ObservableSupplier<Tab> currentTabSupplier) {
+            ObservableSupplier<Tab> currentTabSupplier,
+            ThemeColorProvider themeColorProvider) {
         ExtensionToolbarManager manager =
                 ServiceLoaderUtil.maybeCreate(ExtensionToolbarManager.class);
         if (manager == null) {
             return null;
         }
-        manager.initialize(context, extensionToolbarStub, profileSupplier, currentTabSupplier);
+        manager.initialize(
+                context,
+                extensionToolbarStub,
+                profileSupplier,
+                currentTabSupplier,
+                themeColorProvider);
         return manager;
     }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManagerImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManagerImpl.java
index 1c2e4782..208a1f5d 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManagerImpl.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarManagerImpl.java
@@ -6,6 +6,7 @@
 
 import android.content.Context;
 import android.view.ViewStub;
+import android.widget.LinearLayout;
 
 import org.chromium.base.lifetime.LifetimeAssert;
 import org.chromium.base.supplier.ObservableSupplier;
@@ -14,6 +15,9 @@
 import org.chromium.build.annotations.ServiceImpl;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.toolbar.R;
+import org.chromium.ui.listmenu.ListMenuButton;
 
 /**
  * Implements extension-related buttons for {@link ToolbarManager}.
@@ -25,6 +29,7 @@
 public class ExtensionToolbarManagerImpl implements ExtensionToolbarManager {
     @Nullable private final LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this);
     @Nullable private ExtensionActionListCoordinator mExtensionActionListCoordinator;
+    @Nullable private ExtensionsMenuButtonCoordinator mExtensionsMenuButtonCoordinator;
 
     public ExtensionToolbarManagerImpl() {}
 
@@ -33,10 +38,19 @@
             Context context,
             ViewStub extensionToolbarStub,
             ObservableSupplier<Profile> profileSupplier,
-            ObservableSupplier<Tab> currentTabSupplier) {
+            ObservableSupplier<Tab> currentTabSupplier,
+            ThemeColorProvider themeColorProvider) {
+        LinearLayout container = (LinearLayout) extensionToolbarStub.inflate();
+
+        LinearLayout actionListContainer = container.findViewById(R.id.extension_action_list);
         mExtensionActionListCoordinator =
                 new ExtensionActionListCoordinator(
-                        context, extensionToolbarStub, profileSupplier, currentTabSupplier);
+                        context, actionListContainer, profileSupplier, currentTabSupplier);
+
+        ListMenuButton extensionsMenuButton = container.findViewById(R.id.extensions_menu_button);
+        mExtensionsMenuButtonCoordinator =
+                new ExtensionsMenuButtonCoordinator(
+                        context, extensionsMenuButton, themeColorProvider);
     }
 
     @Override
@@ -45,6 +59,10 @@
             mExtensionActionListCoordinator.destroy();
             mExtensionActionListCoordinator = null;
         }
+        if (mExtensionsMenuButtonCoordinator != null) {
+            mExtensionsMenuButtonCoordinator.destroy();
+            mExtensionsMenuButtonCoordinator = null;
+        }
         LifetimeAssert.setSafeToGc(mLifetimeAssert, true);
     }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuButtonCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuButtonCoordinator.java
new file mode 100644
index 0000000..9c97bdc
--- /dev/null
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuButtonCoordinator.java
@@ -0,0 +1,58 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.toolbar.extensions;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.view.View;
+
+import androidx.core.widget.ImageViewCompat;
+
+import org.chromium.base.lifetime.Destroyable;
+import org.chromium.build.annotations.NullMarked;
+import org.chromium.build.annotations.Nullable;
+import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
+import org.chromium.ui.listmenu.ListMenuButton;
+
+/** Root component for the extension menu button. */
+@NullMarked
+public class ExtensionsMenuButtonCoordinator implements Destroyable {
+
+    private final ListMenuButton mExtensionsMenuButton;
+    private final ThemeColorProvider mThemeColorProvider;
+    private final ThemeColorProvider.TintObserver mTintObserver;
+
+    public ExtensionsMenuButtonCoordinator(
+            Context context,
+            ListMenuButton extensionsMenuButton,
+            ThemeColorProvider themeColorProvider) {
+        mExtensionsMenuButton = extensionsMenuButton;
+        mExtensionsMenuButton.setOnClickListener(this::onClick);
+
+        mThemeColorProvider = themeColorProvider;
+        mTintObserver = this::onTintChanged;
+        mThemeColorProvider.addTintObserver(mTintObserver);
+    }
+
+    void onClick(View view) {
+        if (view != mExtensionsMenuButton) return;
+
+        // TODO(crbug.com/409181513): Implement popup view for extensions.
+    }
+
+    public void onTintChanged(
+            @Nullable ColorStateList tintList,
+            @Nullable ColorStateList activityFocusTintList,
+            @BrandedColorScheme int brandedColorScheme) {
+        ImageViewCompat.setImageTintList(mExtensionsMenuButton, activityFocusTintList);
+    }
+
+    @Override
+    public void destroy() {
+        mExtensionsMenuButton.setOnClickListener(null);
+        mThemeColorProvider.removeTintObserver(mTintObserver);
+    }
+}
diff --git a/chrome/browser/ui/browser_window/public/browser_window_interface.h b/chrome/browser/ui/browser_window/public/browser_window_interface.h
index fbb7152..7e11941 100644
--- a/chrome/browser/ui/browser_window/public/browser_window_interface.h
+++ b/chrome/browser/ui/browser_window/public/browser_window_interface.h
@@ -108,6 +108,24 @@
   // Returns true if the window is visible.
   virtual bool IsVisible() const = 0;
 
+  // WARNING: Many uses of base::WeakPtr are inappropriate and lead to bugs.
+  // An appropriate use case is as a variable passed to an asynchronously
+  // invoked PostTask.
+  // An inappropriate use case is to store as a member of an object that can
+  // outlive BrowserWindowInterface. This leads to inconsistent state machines.
+  // For example (don't do this):
+  // class FooOutlivesBrowser {
+  //   base::WeakPtr<BrowserWindowInterface> bwi_;
+  //   // Conceptually, this member should only be set if bwi_ is set.
+  //   std::optional<SkColor> color_of_browser_;
+  // };
+  // For example (do this):
+  // class FooOutlivesBrowser {
+  //   // Use RegisterBrowserDidClose() to clear both bwi_ and
+  //   // color_of_browser_ prior to bwi_ destruction.
+  //   raw_ptr<BrowserWindowInterface> bwi_;
+  //   std::optional<SkColor> color_of_browser_;
+  // };
   virtual base::WeakPtr<BrowserWindowInterface> GetWeakPtr() = 0;
 
   // Returns the view that houses the Lens overlay.
diff --git a/chrome/browser/ui/qrcode_generator/BUILD.gn b/chrome/browser/ui/qrcode_generator/BUILD.gn
index 597eb1e..36f97343 100644
--- a/chrome/browser/ui/qrcode_generator/BUILD.gn
+++ b/chrome/browser/ui/qrcode_generator/BUILD.gn
@@ -23,6 +23,7 @@
   deps = [
     ":qrcode_generator",
     "//chrome/browser:browser_process",
+    "//chrome/browser/ui/sharing_hub",
     "//chrome/common:constants",
     "//components/prefs",
     "//url",
diff --git a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.cc b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.cc
index 08801250..ccb79ae8 100644
--- a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.cc
+++ b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.cc
@@ -10,17 +10,19 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/user_metrics.h"
 #include "base/time/time.h"
+#include "base/values.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/safety_hub/safety_hub_util.h"
 #include "chrome/common/chrome_features.h"
 #include "components/content_settings/core/browser/content_settings_info.h"
 #include "components/content_settings/core/browser/content_settings_type_set.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/content_settings_constraints.h"
+#include "components/content_settings/core/common/content_settings_metadata.h"
 #include "components/content_settings/core/common/content_settings_pattern.h"
 #include "components/content_settings/core/common/content_settings_types.h"
 #include "components/content_settings/core/common/content_settings_utils.h"
+#include "components/content_settings/core/common/features.h"
 #include "components/permissions/notifications_engagement_service.h"
 #include "components/site_engagement/content/site_engagement_service.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
@@ -33,6 +35,7 @@
 namespace {
 
 constexpr char kRevokedStatusDictKeyStr[] = "revoked_status";
+constexpr char kAcknowledgedStr[] = "acknowledged";
 constexpr char kIgnoreStr[] = "ignore";
 constexpr char kRevokeStr[] = "revoke";
 constexpr char kProposedStr[] = "proposed";
@@ -41,33 +44,63 @@
 constexpr char kHasReportedProposalStr[] = "has_reported_proposal";
 constexpr char kHasReportedFalsePositiveStr[] = "has_reported_false_positive";
 constexpr char kTimestampStr[] = "timestamp";
+constexpr char kVersionStr[] = "version";
 
 constexpr char kRevocationResultHistogram[] =
     "Settings.SafetyHub.DisruptiveNotificationRevocations.RevocationResult";
 
-DisruptiveNotificationPermissionsManager::RevocationState GetRevocationState(
-    const base::Value::Dict& dict) {
+base::TimeDelta GetRevocationsLifetime() {
+  return content_settings::features::
+      kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold.Get();
+}
+
+std::optional<DisruptiveNotificationPermissionsManager::RevocationState>
+GetRevocationState(const base::Value::Dict& dict) {
   const std::string* revocation_state =
       dict.FindString(kRevokedStatusDictKeyStr);
   if (!revocation_state) {
-    return DisruptiveNotificationPermissionsManager::RevocationState::kNone;
+    return std::nullopt;
   } else if (*revocation_state == kProposedStr) {
     return DisruptiveNotificationPermissionsManager::RevocationState::kProposed;
+  } else if (*revocation_state == kAcknowledgedStr) {
+    return DisruptiveNotificationPermissionsManager::RevocationState::
+        kAcknowledged;
   } else if (*revocation_state == kRevokeStr) {
     return DisruptiveNotificationPermissionsManager::RevocationState::kRevoked;
   } else if (*revocation_state == kIgnoreStr) {
     return DisruptiveNotificationPermissionsManager::RevocationState::kIgnore;
   } else {
-    return DisruptiveNotificationPermissionsManager::RevocationState::kUnknown;
+    return std::nullopt;
   }
 }
 
 }  // namespace
 
+bool DisruptiveNotificationPermissionsManager::RevocationEntry::operator==(
+    const RevocationEntry& other) const = default;
+
 DisruptiveNotificationPermissionsManager::ContentSettingHelper::
     ContentSettingHelper(HostContentSettingsMap& hcsm)
     : hcsm_(hcsm) {}
 
+std::vector<
+    std::pair<GURL, DisruptiveNotificationPermissionsManager::RevocationEntry>>
+DisruptiveNotificationPermissionsManager::ContentSettingHelper::
+    GetAllEntries() {
+  std::vector<std::pair<GURL, RevocationEntry>> entries;
+  for (const auto& item : hcsm_->GetSettingsForOneType(
+           ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS)) {
+    const GURL& url = item.primary_pattern.ToRepresentativeUrl();
+    std::optional<RevocationEntry> revocation_entry =
+        ToRevocationEntry(item.setting_value, item.metadata);
+    if (revocation_entry) {
+      entries.push_back(
+          std::make_pair(url, std::move(revocation_entry).value()));
+    }
+  }
+  return entries;
+}
+
 std::optional<DisruptiveNotificationPermissionsManager::RevocationEntry>
 DisruptiveNotificationPermissionsManager::ContentSettingHelper::
     GetRevocationEntry(const GURL& url) {
@@ -75,13 +108,34 @@
   base::Value stored_value = hcsm_->GetWebsiteSetting(
       url, url,
       ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS, &info);
-  if (stored_value.is_none() || !stored_value.is_dict()) {
+  return ToRevocationEntry(stored_value, info.metadata);
+}
+
+std::optional<DisruptiveNotificationPermissionsManager::RevocationEntry>
+DisruptiveNotificationPermissionsManager::ContentSettingHelper::
+    ToRevocationEntry(const base::Value& value,
+                      const content_settings::RuleMetaData& metadata) {
+  if (value.is_none() || !value.is_dict()) {
     return std::nullopt;
   }
-  base::Value::Dict dict = std::move(stored_value).TakeDict();
+  const base::Value::Dict& dict = value.GetDict();
+
+  std::optional<RevocationState> revocation_state = GetRevocationState(dict);
+  if (!revocation_state) {
+    return std::nullopt;
+  }
+
+  if (*revocation_state == RevocationState::kProposed &&
+      dict.FindInt(kVersionStr).value_or(-1) !=
+          features::kSafetyHubDisruptiveNotificationRevocationExperimentVersion
+              .Get()) {
+    // This is a proposed revocation created for a different version of a
+    // revocation experiment. It is outdated, so let's ignore it.
+    return std::nullopt;
+  }
 
   return RevocationEntry{
-      .revocation_state = GetRevocationState(dict),
+      .revocation_state = *revocation_state,
       .site_engagement = dict.FindDouble(kSiteEngagementStr).value_or(0),
       .daily_notification_count =
           dict.FindInt(kDailyNotificationCountStr).value_or(0),
@@ -91,8 +145,6 @@
           dict.FindBool(kHasReportedProposalStr).value_or(false),
       .has_reported_false_positive =
           dict.FindBool(kHasReportedFalsePositiveStr).value_or(false),
-      .created_at = info.metadata.expiration() - info.metadata.lifetime(),
-      .lifetime = info.metadata.lifetime(),
   };
 }
 
@@ -101,22 +153,29 @@
   CHECK(url.is_valid());
 
   std::string_view revocation_state_string;
+  base::TimeDelta lifetime;
+  base::Value::Dict dict;
   switch (entry.revocation_state) {
-    case DisruptiveNotificationPermissionsManager::RevocationState::kNone:
-    case DisruptiveNotificationPermissionsManager::RevocationState::kUnknown:
-      // Invalid entry, we won't persist it.
-      return;
     case DisruptiveNotificationPermissionsManager::RevocationState::kProposed:
       revocation_state_string = kProposedStr;
+      dict.Set(
+          kVersionStr,
+          features::kSafetyHubDisruptiveNotificationRevocationExperimentVersion
+              .Get());
       break;
     case DisruptiveNotificationPermissionsManager::RevocationState::kRevoked:
       revocation_state_string = kRevokeStr;
+      lifetime = GetRevocationsLifetime();
       break;
     case DisruptiveNotificationPermissionsManager::RevocationState::kIgnore:
       revocation_state_string = kIgnoreStr;
       break;
+    case DisruptiveNotificationPermissionsManager::RevocationState::
+        kAcknowledged:
+      revocation_state_string = kAcknowledgedStr;
+      lifetime = GetRevocationsLifetime();
+      break;
   }
-  base::Value::Dict dict;
   dict.Set(kRevokedStatusDictKeyStr, revocation_state_string);
   dict.Set(kSiteEngagementStr, entry.site_engagement);
   dict.Set(kDailyNotificationCountStr, entry.daily_notification_count);
@@ -127,8 +186,8 @@
   if (entry.has_reported_false_positive) {
     dict.Set(kHasReportedFalsePositiveStr, entry.has_reported_false_positive);
   }
-  content_settings::ContentSettingConstraints constraints(entry.created_at);
-  constraints.set_lifetime(entry.lifetime);
+  content_settings::ContentSettingConstraints constraints(entry.timestamp);
+  constraints.set_lifetime(lifetime);
   hcsm_->SetWebsiteSettingCustomScope(
       ContentSettingsPattern::FromURLNoWildcard(url),
       ContentSettingsPattern::Wildcard(),
@@ -233,9 +292,41 @@
     std::optional<RevocationEntry> revocation_entry =
         ContentSettingHelper(*hcsm_).GetRevocationEntry(url);
     if (revocation_entry) {
-      revoked_anything |= HandleExistingValueAndMaybeRevoke(
-          url, *revocation_entry, is_disruptive);
-      continue;
+      switch (revocation_entry->revocation_state) {
+        case RevocationState::kRevoked:
+          // This should never happen, because the content setting is granted.
+          // We are in an inconsistent state, so let's clean this up.
+          ContentSettingHelper(*hcsm_).DeleteRevocationEntry(url);
+          break;
+        case RevocationState::kIgnore:
+          base::UmaHistogramEnumeration(kRevocationResultHistogram,
+                                        RevocationResult::kIgnore);
+          // Ignore this entry, we should not revoke permissions for this url
+          // again.
+          continue;
+        case RevocationState::kProposed:
+          if (!is_disruptive) {
+            // Not disruptive anymore, clean up proposed revocation.
+            ContentSettingHelper(*hcsm_).DeleteRevocationEntry(url);
+          } else {
+            if (!features::kSafetyHubDisruptiveNotificationRevocationShadowRun
+                     .Get() &&
+                CanRevokeNotifications(url, *revocation_entry)) {
+              RevokeNotifications(url, *revocation_entry);
+              revoked_anything = true;
+            } else {
+              base::UmaHistogramEnumeration(
+                  kRevocationResultHistogram,
+                  RevocationResult::kAlreadyInProposedRevokeList);
+            }
+            continue;
+          }
+          break;
+        case RevocationState::kAcknowledged:
+          // Was revoked in the past, but the user regranted. We can revoke
+          // again.
+          break;
+      }
     }
 
     if (!is_disruptive) {
@@ -274,45 +365,66 @@
   if (revoked_anything) {
     DisplayNotification();
   }
+
+  ReportDailyRunMetrics();
 }
 
-bool DisruptiveNotificationPermissionsManager::
-    HandleExistingValueAndMaybeRevoke(const GURL& url,
-                                      const RevocationEntry& revocation_entry,
-                                      bool is_disruptive) {
-  switch (revocation_entry.revocation_state) {
-    case RevocationState::kNone:
-    case RevocationState::kUnknown:
-    case RevocationState::kRevoked:
-      // kNone and kUnknown mean that this is an invalid entry, while kRevoked
-      // should never happen, because the content setting is granted. In any of
-      // these three cases we are in an inconsistent state, so let's clean this
-      // up.
-      ContentSettingHelper(*hcsm_).DeleteRevocationEntry(url);
-      return false;
-    case RevocationState::kIgnore:
-      base::UmaHistogramEnumeration(kRevocationResultHistogram,
-                                    RevocationResult::kIgnore);
-      return false;
-    case RevocationState::kProposed:
-      if (!is_disruptive) {
-        // Not disruptive anymore, clean up proposed revocation.
-        ContentSettingHelper(*hcsm_).DeleteRevocationEntry(url);
-        base::UmaHistogramEnumeration(kRevocationResultHistogram,
-                                      RevocationResult::kNotDisruptive);
-        return false;
-      }
-      if (!features::kSafetyHubDisruptiveNotificationRevocationShadowRun
-               .Get() &&
-          CanRevokeNotifications(url, revocation_entry)) {
-        RevokeNotifications(url, revocation_entry);
-        return true;
-      } else {
-        base::UmaHistogramEnumeration(
-            kRevocationResultHistogram,
-            RevocationResult::kAlreadyInProposedRevokeList);
-        return false;
-      }
+void DisruptiveNotificationPermissionsManager::ReportDailyRunMetrics() {
+  base::Time now = clock_->Now();
+  for (const auto& [url, revocation_entry] :
+       ContentSettingHelper(*hcsm_).GetAllEntries()) {
+    if (now - revocation_entry.timestamp > GetRevocationsLifetime()) {
+      // Since ignored entries don't expire while revoked do, report entries
+      // only for a limited amount of time in order to ensure that the
+      // distribution makes sense.
+      continue;
+    }
+
+    std::string_view revocation_state;
+    switch (revocation_entry.revocation_state) {
+      case RevocationState::kRevoked:
+        revocation_state = "Revoked";
+        break;
+      case RevocationState::kAcknowledged:
+        revocation_state = "Acknowledged";
+        break;
+      case RevocationState::kIgnore:
+        revocation_state = "Regranted";
+        break;
+      case RevocationState::kProposed:
+        revocation_state = "Proposed";
+        break;
+    }
+
+    std::string_view site_engagement;
+    double score = site_engagement_service_->GetScore(url);
+    if (score == 0.0) {
+      site_engagement = "0";
+    } else if (score <= 1) {
+      site_engagement = "1";
+    } else if (score <= 2) {
+      site_engagement = "2";
+    } else if (score <= 3) {
+      site_engagement = "3";
+    } else if (score <= 4) {
+      site_engagement = "4";
+    } else if (score <= 5) {
+      site_engagement = "5";
+    } else if (score <= 7) {
+      site_engagement = "6-7";
+    } else if (score <= 10) {
+      site_engagement = "8-10";
+    } else if (score <= 15) {
+      site_engagement = "11-15";
+    } else {
+      site_engagement = ">15";
+    }
+    base::UmaHistogramCustomCounts(
+        base::StrCat({"Settings.SafetyHub.DisruptiveNotificationRevocations."
+                      "DailyDistribution.",
+                      revocation_state, ".SiteEngagement", site_engagement,
+                      ".DaysSinceRevocation"}),
+        (now - revocation_entry.timestamp).InDays(), 1, 30, 30);
   }
 }
 
@@ -340,8 +452,8 @@
   const base::TimeDelta delta_since_proposed_revocation =
       clock_->Now() - revocation_entry.timestamp;
   revocation_entry.revocation_state = RevocationState::kRevoked;
-  revocation_entry.created_at = clock_->Now();
-  revocation_entry.lifetime = safety_hub_util::GetCleanUpThreshold();
+  // Reset timestamp so that it reflects the revocation time.
+  revocation_entry.timestamp = clock_->Now();
   ContentSettingHelper(*hcsm_).PersistRevocationEntry(url, revocation_entry);
   UpdateNotificationPermission(url, ContentSetting::CONTENT_SETTING_DEFAULT);
   base::UmaHistogramEnumeration(kRevocationResultHistogram,
@@ -448,8 +560,6 @@
     RevocationEntry revocation_entry,
     bool regranted_in_safety_hub) {
   revocation_entry.revocation_state = RevocationState::kIgnore;
-  // Clear the lifetime so that this won't expire.
-  revocation_entry.lifetime = base::TimeDelta();
   ContentSettingHelper(*hcsm_).PersistRevocationEntry(url, revocation_entry);
 
   std::string uma_metric_prefix = base::StrCat(
@@ -487,9 +597,6 @@
 
   UpdateNotificationPermission(url, ContentSetting::CONTENT_SETTING_DEFAULT);
   revocation_entry->revocation_state = RevocationState::kRevoked;
-  revocation_entry->created_at =
-      constraints.expiration() - constraints.lifetime();
-  revocation_entry->lifetime = constraints.lifetime();
   ContentSettingHelper(*hcsm_).PersistRevocationEntry(url, *revocation_entry);
 }
 
@@ -502,43 +609,29 @@
         ContentSettingHelper(*hcsm_).GetRevocationEntry(url);
     if (revocation_entry &&
         revocation_entry->revocation_state == RevocationState::kRevoked) {
-      DeleteRevokedPermissionContentSetting(
-          revoked_permission.primary_pattern,
-          revoked_permission.secondary_pattern);
+      revocation_entry->revocation_state = RevocationState::kAcknowledged;
+      ContentSettingHelper(*hcsm_).PersistRevocationEntry(url,
+                                                          *revocation_entry);
     }
   }
 }
 
-void DisruptiveNotificationPermissionsManager::
-    DeleteRevokedPermissionContentSetting(
-        const ContentSettingsPattern& primary_pattern,
-        const ContentSettingsPattern& secondary_pattern) {
-  hcsm_->SetWebsiteSettingCustomScope(
-      primary_pattern, secondary_pattern,
-      ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS, {});
-}
-
 void DisruptiveNotificationPermissionsManager::RestoreDeletedRevokedPermission(
     const ContentSettingsPattern& primary_pattern,
     content_settings::ContentSettingConstraints constraints) {
   GURL url = primary_pattern.ToRepresentativeUrl();
-  base::Value engagement_as_value = hcsm_->GetWebsiteSetting(
-      url, GURL(), ContentSettingsType::NOTIFICATION_INTERACTIONS);
-  int daily_notification_count = 0;
-  if (!engagement_as_value.is_none() && engagement_as_value.is_dict()) {
-    daily_notification_count = permissions::NotificationsEngagementService::
-        GetDailyAverageNotificationCount(engagement_as_value.GetDict());
+  std::optional<RevocationEntry> revocation_entry =
+      ContentSettingHelper(*hcsm_).GetRevocationEntry(url);
+
+  // If the user is restoring an acknowledged revoked permission then there
+  // should be a corresponding acknowledged entry.
+  if (!revocation_entry ||
+      revocation_entry->revocation_state != RevocationState::kAcknowledged) {
+    return;
   }
 
-  ContentSettingHelper(*hcsm_).PersistRevocationEntry(
-      url, RevocationEntry{
-               .revocation_state = RevocationState::kRevoked,
-               .site_engagement = site_engagement_service_->GetScore(url),
-               .daily_notification_count = daily_notification_count,
-               .timestamp = clock_->Now(),
-               .created_at = constraints.expiration() - constraints.lifetime(),
-               .lifetime = constraints.lifetime(),
-           });
+  revocation_entry->revocation_state = RevocationState::kRevoked;
+  ContentSettingHelper(*hcsm_).PersistRevocationEntry(url, *revocation_entry);
 }
 
 bool DisruptiveNotificationPermissionsManager::IsNotificationDisruptive(
diff --git a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.h b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.h
index 73a5899..4036d88 100644
--- a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.h
+++ b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.h
@@ -86,12 +86,11 @@
 
   // LINT.IfChange(RevocationState)
   enum class RevocationState {
-    kNone = 0,
     kProposed = 1,
     kRevoked = 2,
     kIgnore = 3,
-    kUnknown = 4,
-    kMaxValue = kUnknown,
+    kAcknowledged = 4,
+    kMaxValue = kAcknowledged,
   };
   // LINT.ThenChange(//tools/metrics/histograms/enums.xml:DisruptiveNotificationRevocationState)
 
@@ -143,11 +142,6 @@
   // be shown to the user. Does not change permissions themselves.
   void ClearRevokedPermissionsList();
 
-  // Removes the `REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS` setting.
-  void DeleteRevokedPermissionContentSetting(
-      const ContentSettingsPattern& primary_pattern,
-      const ContentSettingsPattern& secondary_pattern);
-
   // Restores REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS entry for the
   // primary_pattern after it was deleted after user has accepted the revocation
   // (via `ClearRevokedPermissionsList()`). Only restores the value if there is
@@ -199,18 +193,17 @@
   // A revocation entry as stored in content settings
   // (ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS).
   struct RevocationEntry {
+    bool operator==(const RevocationEntry& other) const;
+
     RevocationState revocation_state;
     double site_engagement;
     int daily_notification_count;
+
+    // Timestamp of proposed or actual revocation.
     base::Time timestamp;
 
     bool has_reported_proposal = false;
     bool has_reported_false_positive = false;
-
-    base::Time created_at = base::Time::Now();
-
-    // If lifetime is 0, it doesn't expire.
-    base::TimeDelta lifetime;
   };
 
   // Helper class to manage content settings for
@@ -224,20 +217,16 @@
     std::optional<RevocationEntry> GetRevocationEntry(const GURL& url);
     void PersistRevocationEntry(const GURL& url, const RevocationEntry& entry);
     void DeleteRevocationEntry(const GURL& url);
+    std::vector<std::pair<GURL, RevocationEntry>> GetAllEntries();
 
    private:
+    std::optional<RevocationEntry> ToRevocationEntry(
+        const base::Value& value,
+        const content_settings::RuleMetaData& metadata);
+
     base::raw_ref<HostContentSettingsMap> hcsm_;
   };
 
-  // Process existing content setting value: record false positive, revoke
-  // notifications or report the site as already in the proposed revocation
-  // list. Returns `true` if notifications were actually revoked, `false`
-  // otherwise.
-  bool HandleExistingValueAndMaybeRevoke(
-      const GURL& url,
-      const RevocationEntry& revocation_entry,
-      bool is_disruptive);
-
   // If the notifications should be revoked based on whether the metrics were
   // already reported or the cooldown period has run out.
   bool CanRevokeNotifications(const GURL& url,
@@ -268,6 +257,9 @@
                              RevocationEntry revocation_entry,
                              bool regranted_in_safety_hub);
 
+  // Report metrics for the daily run.
+  void ReportDailyRunMetrics();
+
   scoped_refptr<HostContentSettingsMap> hcsm_;
 
   raw_ptr<site_engagement::SiteEngagementService> site_engagement_service_;
diff --git a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager_unittest.cc b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager_unittest.cc
index a75b780f..c1183a5 100644
--- a/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager_unittest.cc
+++ b/chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager_unittest.cc
@@ -14,6 +14,7 @@
 #include "chrome/common/chrome_features.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/features.h"
 #include "components/content_settings/core/test/content_settings_mock_provider.h"
 #include "components/content_settings/core/test/content_settings_test_utils.h"
 #include "components/permissions/constants.h"
@@ -143,7 +144,6 @@
             .site_engagement = 0.0,
             .daily_notification_count = kDailyNotificationCount,
             .timestamp = base::Time::Now() - base::Days(days_since_revocation),
-            .lifetime = base::Days(30),
         });
   }
 
@@ -167,6 +167,106 @@
   base::SimpleTestClock clock_;
 };
 
+TEST_F(DisruptiveNotificationPermissionsManagerTest,
+       ContentSettingHelperCorrectLifetime) {
+  GURL url("https://example.com");
+
+  for (const auto& [revocation_state, expected_lifetime] :
+       std::initializer_list<std::pair<RevocationState, base::TimeDelta>>{
+           {RevocationState::kProposed, base::Days(0)},
+           {RevocationState::kRevoked,
+            content_settings::features::
+                kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold
+                    .Get()},
+           {RevocationState::kIgnore, base::Days(0)},
+           {RevocationState::kAcknowledged,
+            content_settings::features::
+                kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold
+                    .Get()},
+       }) {
+    ContentSettingHelper(*hcsm()).PersistRevocationEntry(
+        url, RevocationEntry{
+                 .revocation_state = revocation_state,
+                 .site_engagement = 0.0,
+                 .daily_notification_count = 3,
+                 .timestamp = base::Time::Now(),
+             });
+    content_settings::SettingInfo info;
+    base::Value stored_value = hcsm()->GetWebsiteSetting(
+        url, url,
+        ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS,
+        &info);
+    EXPECT_TRUE(stored_value.is_dict());
+    EXPECT_EQ(info.metadata.lifetime(), expected_lifetime);
+    ContentSettingHelper(*hcsm()).DeleteRevocationEntry(url);
+    EXPECT_TRUE(
+        hcsm()
+            ->GetWebsiteSetting(url, url,
+                                ContentSettingsType::
+                                    REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS,
+                                &info)
+            .is_none());
+  }
+}
+
+TEST_F(DisruptiveNotificationPermissionsManagerTest,
+       ProposedRevocationsWithWrongVersionAreIgnored) {
+  feature_list_.InitAndEnableFeatureWithParameters(
+      features::kSafetyHubDisruptiveNotificationRevocation,
+      {{features::kSafetyHubDisruptiveNotificationRevocationExperimentVersion
+            .name,
+        "1"}});
+
+  GURL proposed_url("https://www.example1.com");
+  GURL revoked_url("https://www.example2.com");
+  GURL ignore_url("https://www.example3.com");
+  RevocationEntry proposed_entry = RevocationEntry{
+      .revocation_state = RevocationState::kProposed,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  RevocationEntry revoked_entry = RevocationEntry{
+      .revocation_state = RevocationState::kRevoked,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  RevocationEntry ignore_entry = RevocationEntry{
+      .revocation_state = RevocationState::kIgnore,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(proposed_url,
+                                                       proposed_entry);
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(revoked_url,
+                                                       revoked_entry);
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(ignore_url,
+                                                       ignore_entry);
+
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(proposed_url),
+              Optional(Eq(proposed_entry)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(revoked_url),
+              Optional(Eq(revoked_entry)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(ignore_url),
+              Optional(Eq(ignore_entry)));
+
+  feature_list_.Reset();
+  feature_list_.InitAndEnableFeatureWithParameters(
+      features::kSafetyHubDisruptiveNotificationRevocation,
+      {{features::kSafetyHubDisruptiveNotificationRevocationExperimentVersion
+            .name,
+        "2"}});
+
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(proposed_url),
+              Eq(std::nullopt));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(revoked_url),
+              Optional(Eq(revoked_entry)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(ignore_url),
+              Optional(Eq(ignore_entry)));
+}
+
 class DisruptiveNotificationPermissionsManagerRevocationTest
     : public DisruptiveNotificationPermissionsManagerTest {
  public:
@@ -254,11 +354,25 @@
 
   // After that, no new metrics are reported since there is no notification
   // content setting exception.
+  clock()->Advance(base::Days(1));
   manager()->RevokeDisruptiveNotifications();
   EXPECT_EQ(GetRevokedPermissionsCount(), 1);
   t.ExpectBucketCount(kRevocationResultHistogram,
                       RevocationResult::kProposedRevoke, 1);
   t.ExpectBucketCount(kRevocationResultHistogram, RevocationResult::kRevoke, 1);
+
+  t.ExpectBucketCount(
+      "Settings.SafetyHub.DisruptiveNotificationRevocations.DailyDistribution."
+      "Proposed.SiteEngagement0.DaysSinceRevocation",
+      0, 1);
+  t.ExpectBucketCount(
+      "Settings.SafetyHub.DisruptiveNotificationRevocations.DailyDistribution."
+      "Revoked.SiteEngagement0.DaysSinceRevocation",
+      0, 1);
+  t.ExpectBucketCount(
+      "Settings.SafetyHub.DisruptiveNotificationRevocations.DailyDistribution."
+      "Revoked.SiteEngagement0.DaysSinceRevocation",
+      1, 1);
 }
 
 TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
@@ -611,8 +725,6 @@
                .revocation_state = RevocationState::kProposed,
                .site_engagement = 0.0,
                .daily_notification_count = kDailyNotificationCount,
-               .created_at = base::Time::Now(),
-               .lifetime = base::Days(30),
            });
 
   ukm::SourceId source_id = ukm::UkmRecorder::GetNewSourceID();
@@ -665,7 +777,6 @@
                .site_engagement = 0.0,
                .daily_notification_count = 3,
                .timestamp = clock()->Now(),
-               .lifetime = safety_hub_util::GetCleanUpThreshold(),
            });
 
   clock()->Advance(base::Days(5));
@@ -688,8 +799,6 @@
   EXPECT_THAT(revocation_entry,
               Optional(Field(&RevocationEntry::revocation_state,
                              RevocationState::kIgnore)));
-  EXPECT_THAT(revocation_entry, Optional(Field(&RevocationEntry::lifetime,
-                                               Eq(base::TimeDelta()))));
 
   t.ExpectUniqueSample(
       "Settings.SafetyHub.DisruptiveNotificationRevocations.UserRegrant."
@@ -744,7 +853,7 @@
 
   // Undo the regrant (return to revoked state).
   content_settings::ContentSettingConstraints constraints(base::Time::Now());
-  constraints.set_lifetime(safety_hub_util::GetCleanUpThreshold());
+  constraints.set_lifetime(base::Days(30));
   manager()->UndoRegrantPermissionForUrl(
       url, {ContentSettingsType::NOTIFICATIONS}, std::move(constraints));
 
@@ -767,9 +876,6 @@
               Optional(Field(&RevocationEntry::daily_notification_count, 3)));
   EXPECT_THAT(revocation_entry,
               Optional(Field(&RevocationEntry::timestamp, base::Time::Now())));
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::lifetime,
-                             safety_hub_util::GetCleanUpThreshold())));
 }
 
 TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
@@ -784,7 +890,6 @@
 
   // Attempt to undo the regrant (return to revoked state).
   content_settings::ContentSettingConstraints constraints(base::Time::Now());
-  constraints.set_lifetime(safety_hub_util::GetCleanUpThreshold());
   manager()->UndoRegrantPermissionForUrl(
       url, {ContentSettingsType::NOTIFICATIONS}, std::move(constraints));
 
@@ -816,7 +921,6 @@
 
   // Attempt to undo the regrant (return to revoked state).
   content_settings::ContentSettingConstraints constraints(base::Time::Now());
-  constraints.set_lifetime(safety_hub_util::GetCleanUpThreshold());
   manager()->UndoRegrantPermissionForUrl(
       url, {ContentSettingsType::GEOLOCATION}, std::move(constraints));
 
@@ -828,93 +932,68 @@
 }
 
 TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
-       ClearRevokedPermissionsList) {
+       ClearAndRestoreRevokedPermissionsList) {
   base::HistogramTester t;
 
   // Set up a revoked permission.
   GURL revoked_url("https://www.example1.com");
-  ContentSettingHelper(*hcsm()).PersistRevocationEntry(
-      revoked_url, RevocationEntry{
-                       .revocation_state = RevocationState::kRevoked,
-                       .site_engagement = 0.0,
-                       .daily_notification_count = 3,
-                       .timestamp = base::Time::Now(),
-                   });
+  RevocationEntry revoked_entry = RevocationEntry{
+      .revocation_state = RevocationState::kRevoked,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(revoked_url,
+                                                       revoked_entry);
 
   // Set up a proposed permission.
   GURL proposed_url("https://www.example2.com");
-  ContentSettingHelper(*hcsm()).PersistRevocationEntry(
-      proposed_url, RevocationEntry{
-                        .revocation_state = RevocationState::kProposed,
-                        .site_engagement = 0.0,
-                        .daily_notification_count = 3,
-                        .timestamp = base::Time::Now(),
-                    });
+  RevocationEntry proposed_entry = RevocationEntry{
+      .revocation_state = RevocationState::kProposed,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(proposed_url,
+                                                       proposed_entry);
 
   // Set up an ignored permission.
   GURL ignored_url("https://www.example3.com");
-  ContentSettingHelper(*hcsm()).PersistRevocationEntry(
-      ignored_url, RevocationEntry{
-                       .revocation_state = RevocationState::kIgnore,
-                       .site_engagement = 0.0,
-                       .daily_notification_count = 3,
-                       .timestamp = base::Time::Now(),
-                   });
+  RevocationEntry ignored_entry = RevocationEntry{
+      .revocation_state = RevocationState::kIgnore,
+      .site_engagement = 0.0,
+      .daily_notification_count = 3,
+      .timestamp = base::Time::Now(),
+  };
+  ContentSettingHelper(*hcsm()).PersistRevocationEntry(ignored_url,
+                                                       ignored_entry);
 
   EXPECT_EQ(GetRevokedPermissionsCount(), 3);
   manager()->ClearRevokedPermissionsList();
-  EXPECT_EQ(GetRevokedPermissionsCount(), 2);
+  EXPECT_EQ(GetRevokedPermissionsCount(), 3);
 
-  // Only revoked value is cleared, others are not affected.
+  RevocationEntry acknowledged_entry = revoked_entry;
+  acknowledged_entry.revocation_state = RevocationState::kAcknowledged;
+
+  // Only revoked value is set to acknowledged, others are not affected.
   EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(revoked_url),
-              Eq(std::nullopt));
+              Optional(Eq(acknowledged_entry)));
   EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(proposed_url),
-              Not(Eq(std::nullopt)));
+              Optional(Eq(proposed_entry)));
   EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(ignored_url),
-              Not(Eq(std::nullopt)));
-}
-
-TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
-       RestoreDeletedRevokedPermission) {
-  GURL url("https://www.example1.com");
-
-  SetDailyAverageNotificationCount(url, 3);
-  site_engagement_service()->ResetBaseScoreForURL(url, 1.0);
+              Optional(Eq(ignored_entry)));
 
   content_settings::ContentSettingConstraints constraints;
   manager()->RestoreDeletedRevokedPermission(
-      ContentSettingsPattern::FromURLNoWildcard(url), constraints.Clone());
+      ContentSettingsPattern::FromURLNoWildcard(revoked_url),
+      constraints.Clone());
 
-  std::optional<RevocationEntry> revocation_entry =
-      ContentSettingHelper(*hcsm()).GetRevocationEntry(url);
-
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::has_reported_proposal, false)));
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::site_engagement, 1.0)));
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::daily_notification_count, 3)));
-}
-
-TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
-       RestoreDeletedRevokedPermissionNoNotificationCount) {
-  GURL url("https://www.example1.com");
-
-  site_engagement_service()->ResetBaseScoreForURL(url, 1.0);
-
-  content_settings::ContentSettingConstraints constraints;
-  manager()->RestoreDeletedRevokedPermission(
-      ContentSettingsPattern::FromURLNoWildcard(url), constraints.Clone());
-
-  std::optional<RevocationEntry> revocation_entry =
-      ContentSettingHelper(*hcsm()).GetRevocationEntry(url);
-
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::has_reported_proposal, false)));
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::site_engagement, 1.0)));
-  EXPECT_THAT(revocation_entry,
-              Optional(Field(&RevocationEntry::daily_notification_count, 0)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(revoked_url),
+              Optional(Eq(revoked_entry)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(proposed_url),
+              Optional(Eq(proposed_entry)));
+  EXPECT_THAT(ContentSettingHelper(*hcsm()).GetRevocationEntry(ignored_url),
+              Optional(Eq(ignored_entry)));
 }
 
 TEST_F(DisruptiveNotificationPermissionsManagerRevocationTest,
@@ -961,9 +1040,6 @@
                  .site_engagement = 0.0,
                  .daily_notification_count = 3,
                  .timestamp = base::Time::Now(),
-                 .lifetime = initial_state == RevocationState::kIgnore
-                                 ? base::TimeDelta()
-                                 : base::Days(14),
              });
     SetNotificationPermission(url, new_content_setting);
     std::optional revocation_entry =
@@ -971,11 +1047,6 @@
     EXPECT_THAT(
         revocation_entry,
         Optional(Field(&RevocationEntry::revocation_state, expected_state)));
-    EXPECT_THAT(revocation_entry,
-                Optional(Field(&RevocationEntry::lifetime,
-                               expected_state == RevocationState::kIgnore
-                                   ? base::TimeDelta()
-                                   : base::Days(14))));
 
     // Clean up.
     ContentSettingHelper(*hcsm()).DeleteRevocationEntry(url);
@@ -992,7 +1063,6 @@
                .site_engagement = 0.0,
                .daily_notification_count = 3,
                .timestamp = base::Time::Now(),
-               .lifetime = base::Days(14),
            });
   clock()->Advance(base::Days(5));
   site_engagement_service()->ResetBaseScoreForURL(url, 7.0);
diff --git a/chrome/browser/ui/safety_hub/revoked_permissions_service_unittest.cc b/chrome/browser/ui/safety_hub/revoked_permissions_service_unittest.cc
index db0143e..c0acf97 100644
--- a/chrome/browser/ui/safety_hub/revoked_permissions_service_unittest.cc
+++ b/chrome/browser/ui/safety_hub/revoked_permissions_service_unittest.cc
@@ -26,6 +26,7 @@
 #include "chrome/browser/permissions/notifications_engagement_service_factory.h"
 #include "chrome/browser/safe_browsing/test_safe_browsing_service.h"
 #include "chrome/browser/ui/safety_hub/abusive_notification_permissions_manager.h"
+#include "chrome/browser/ui/safety_hub/disruptive_notification_permissions_manager.h"
 #include "chrome/browser/ui/safety_hub/mock_safe_browsing_database_manager.h"
 #include "chrome/browser/ui/safety_hub/revoked_permissions_service_factory.h"
 #include "chrome/browser/ui/safety_hub/safety_hub_constants.h"
@@ -93,10 +94,6 @@
 // An arbitrary large number that doesn't match any ContentSettingsType;
 const int32_t unknown_type = 300000;
 
-constexpr std::string_view kRevokedStatus = "revoked_status";
-constexpr std::string_view kProposed = "proposed";
-constexpr std::string_view kRevoke = "revoke";
-
 std::set<ContentSettingsType> abusive_permission_types({notifications_type});
 std::set<ContentSettingsType> unused_permission_types({geolocation_type,
                                                        chooser_type});
@@ -335,11 +332,17 @@
     EXPECT_EQ(expected_size, revoked_permissions_list.size());
   }
 
-  void ExpectRevokedDisruptiveNotificationPermissionSize(size_t expected_size) {
-    ContentSettingsForOneType revoked_permissions =
-        hcsm()->GetSettingsForOneType(
-            ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS);
-    EXPECT_EQ(expected_size, revoked_permissions.size());
+  int GetRevokedDisruptiveNotificationPermissionSize() {
+    int count = 0;
+    for (const auto& [url, revocation_entry] :
+         DisruptiveNotificationPermissionsManager::ContentSettingHelper(*hcsm())
+             .GetAllEntries()) {
+      if (revocation_entry.revocation_state ==
+          DisruptiveNotificationPermissionsManager::RevocationState::kRevoked) {
+        ++count;
+      }
+    }
+    return count;
   }
 
   void SetupRevokedUnusedPermissionSite(
@@ -395,34 +398,24 @@
         constraint);
   }
 
-  void SetupRevokedDisruptiveNotificationSite(
-      std::string url,
-      base::TimeDelta lifetime =
-          content_settings::features::
-              kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold
-                  .Get()) {
-    content_settings::ContentSettingConstraints constraint(clock()->Now());
-    constraint.set_lifetime(lifetime);
-    hcsm()->SetWebsiteSettingDefaultScope(
-        GURL(url), GURL(url),
-        ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS,
-        base::Value(base::Value::Dict().Set(kRevokedStatus, kRevoke)),
-        constraint);
+  void SetupRevokedDisruptiveNotificationSite(std::string url) {
+    DisruptiveNotificationPermissionsManager::ContentSettingHelper(*hcsm())
+        .PersistRevocationEntry(
+            GURL(url),
+            DisruptiveNotificationPermissionsManager::RevocationEntry{
+                .revocation_state = DisruptiveNotificationPermissionsManager::
+                    RevocationState::kRevoked,
+                .timestamp = clock()->Now()});
   }
 
-  void SetupProposedRevokedDisruptiveNotificationSite(
-      std::string url,
-      base::TimeDelta lifetime =
-          content_settings::features::
-              kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold
-                  .Get()) {
-    content_settings::ContentSettingConstraints constraint(clock()->Now());
-    constraint.set_lifetime(lifetime);
-    hcsm()->SetWebsiteSettingDefaultScope(
-        GURL(url), GURL(url),
-        ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS,
-        base::Value(base::Value::Dict().Set(kRevokedStatus, kProposed)),
-        constraint);
+  void SetupProposedRevokedDisruptiveNotificationSite(std::string url) {
+    DisruptiveNotificationPermissionsManager::ContentSettingHelper(*hcsm())
+        .PersistRevocationEntry(
+            GURL(url),
+            DisruptiveNotificationPermissionsManager::RevocationEntry{
+                .revocation_state = DisruptiveNotificationPermissionsManager::
+                    RevocationState::kProposed,
+                .timestamp = clock()->Now()});
   }
 
   void UndoRegrantPermissionsForUrl(
@@ -1278,7 +1271,7 @@
   service()->ClearRevokedPermissionsList();
   EXPECT_EQ(0U, GetRevokedUnusedPermissions(hcsm()).size());
   ExpectRevokedAbusiveNotificationPermissionSize(0U);
-  ExpectRevokedDisruptiveNotificationPermissionSize(0U);
+  EXPECT_EQ(GetRevokedDisruptiveNotificationPermissionSize(), 0);
 }
 
 TEST_P(RevokedPermissionsServiceTest, RestoreClearedRevokedPermissionsList) {
@@ -1318,7 +1311,7 @@
   service()->ClearRevokedPermissionsList();
   EXPECT_EQ(0U, GetRevokedUnusedPermissions(hcsm()).size());
   ExpectRevokedAbusiveNotificationPermissionSize(0U);
-  ExpectRevokedDisruptiveNotificationPermissionSize(0U);
+  EXPECT_EQ(GetRevokedDisruptiveNotificationPermissionSize(), 0);
 
   service()->RestoreDeletedRevokedPermissionsList(revoked_permissions_vector);
 
@@ -1329,7 +1322,7 @@
     ExpectRevokedAbusiveNotificationPermissionSize(2U);
   }
   if (ShouldSetupDisruptiveSites()) {
-    ExpectRevokedDisruptiveNotificationPermissionSize(1U);
+    EXPECT_EQ(GetRevokedDisruptiveNotificationPermissionSize(), 1);
   }
 }
 
@@ -1423,8 +1416,9 @@
   const auto default_lifetime =
       content_settings::features::
           kSafetyCheckUnusedSitePermissionsRevocationCleanUpThreshold.Get();
-  const auto shorter_lifetime = base::Days(1);
-  const auto longer_lifetime = base::Days(10);
+  const auto shorter_lifetime = default_lifetime - base::Days(1);
+  const auto longer_lifetime = default_lifetime + base::Days(1);
+  const auto disruptive_revocations_lifetime = default_lifetime;
   if (ShouldSetupAbusiveNotificationSites()) {
     SetupAbusiveNotificationSite(url2, ContentSetting::CONTENT_SETTING_ASK);
     SetupAbusiveNotificationSite(url3, ContentSetting::CONTENT_SETTING_ASK);
@@ -1441,8 +1435,8 @@
     SetupRevokedUnusedPermissionSite(url6, shorter_lifetime);
   }
   if (ShouldSetupDisruptiveSites()) {
-    SetupRevokedDisruptiveNotificationSite(url5, shorter_lifetime);
-    SetupRevokedDisruptiveNotificationSite(url6, longer_lifetime);
+    SetupRevokedDisruptiveNotificationSite(url5);
+    SetupRevokedDisruptiveNotificationSite(url6);
   }
 
   // When we start up a new service instance, the latest result (i.e. the list
@@ -1477,7 +1471,8 @@
       EXPECT_EQ(permission_5.constraints.lifetime(), longer_lifetime);
 
       auto permission_6 = GetPermissionsDataByUrl(revoked_permissions, url6);
-      EXPECT_EQ(permission_6.constraints.lifetime(), longer_lifetime);
+      EXPECT_EQ(permission_6.constraints.lifetime(),
+                disruptive_revocations_lifetime);
     } else if (ShouldSetupUnusedSites()) {
       EXPECT_EQ(5U, revoked_permissions.size());
       EXPECT_TRUE(IsUrlInRevokedSettings(revoked_permissions, url1));
diff --git a/chrome/browser/ui/sharing_hub/BUILD.gn b/chrome/browser/ui/sharing_hub/BUILD.gn
new file mode 100644
index 0000000..2ef6bd8
--- /dev/null
+++ b/chrome/browser/ui/sharing_hub/BUILD.gn
@@ -0,0 +1,80 @@
+# Copyright 2025 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/ui.gni")
+
+assert(is_win || is_mac || is_linux || is_chromeos)
+assert(toolkit_views)
+
+source_set("sharing_hub") {
+  sources = [
+    "screenshot/screenshot_captured_bubble_controller.h",
+    "sharing_hub_bubble_controller.h",
+    "sharing_hub_bubble_view.h",
+  ]
+  public_deps = [
+    "//base",
+    "//chrome/browser/share",
+    "//chrome/browser/sharing_hub",
+    "//content/public/browser",
+  ]
+
+  if (is_chromeos) {
+    sources += [ "sharing_hub_bubble_controller_chromeos_impl.h" ]
+    public_deps += [
+      "//chrome/browser/sharesheet",
+      "//chromeos/components/sharesheet:constants",
+      "//ui/views",
+    ]
+  } else {
+    sources += [ "sharing_hub_bubble_controller_desktop_impl.h" ]
+  }
+}
+
+source_set("impl") {
+  sources = [ "screenshot/screenshot_captured_bubble_controller.cc" ]
+  deps = [
+    ":sharing_hub",
+    "//chrome/browser/image_editor",
+    "//chrome/browser/profiles:profile",
+  ]
+
+  if (is_chromeos) {
+    sources += [ "sharing_hub_bubble_controller_chromeos_impl.cc" ]
+    deps += [
+      "//components/services/app_service/",
+      "//ui/views",
+    ]
+  } else {
+    sources += [ "sharing_hub_bubble_controller_desktop_impl.cc" ]
+    deps += [
+      "//chrome/app:command_ids",
+      "//chrome/app:generated_resources",
+      "//chrome/browser/favicon",
+      "//chrome/browser/ui/color:color_headers",
+      "//chrome/browser/ui/qrcode_generator",
+      "//chrome/browser/ui/send_tab_to_self",
+      "//components/media_router/browser",
+      "//ui/base",
+      "//ui/color:color_headers",
+      "//ui/native_theme",
+    ]
+  }
+  public_deps = [ "//chrome/browser:browser_public_dependencies" ]
+}
+
+if (is_win || is_mac || is_linux) {
+  source_set("test_support_ui") {
+    testonly = true
+    sources = [
+      "fake_sharing_hub_bubble_controller.cc",
+      "fake_sharing_hub_bubble_controller.h",
+    ]
+
+    public_deps = [
+      ":sharing_hub",
+      "//testing/gmock",
+    ]
+  }
+}
diff --git a/chrome/browser/ui/tab_ui_helper.cc b/chrome/browser/ui/tab_ui_helper.cc
index 701bbe8e..5584423 100644
--- a/chrome/browser/ui/tab_ui_helper.cc
+++ b/chrome/browser/ui/tab_ui_helper.cc
@@ -9,7 +9,10 @@
 #include "build/build_config.h"
 #include "chrome/browser/favicon/favicon_utils.h"
 #include "chrome/browser/sessions/session_restore.h"
+#include "chrome/browser/ui/tabs/public/tab_features.h"
+#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_web_contents_listener.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/tabs/public/tab_interface.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/resources/grit/ui_resources.h"
 
@@ -30,6 +33,17 @@
 TabUIHelper::~TabUIHelper() = default;
 
 std::u16string TabUIHelper::GetTitle() const {
+  tabs::TabInterface* const tab_interface =
+      tabs::TabInterface::GetFromContents(web_contents());
+  const tab_groups::SavedTabGroupWebContentsListener* wc_listener =
+      tab_interface->GetTabFeatures()->saved_tab_group_web_contents_listener();
+  if (wc_listener) {
+    if (const std::optional<tab_groups::DeferredTabState>& deferred_tab_state =
+            wc_listener->deferred_tab_state()) {
+      return deferred_tab_state.value().title();
+    }
+  }
+
   const std::u16string& contents_title = web_contents()->GetTitle();
   if (!contents_title.empty()) {
     return contents_title;
@@ -43,6 +57,17 @@
 }
 
 ui::ImageModel TabUIHelper::GetFavicon() const {
+  tabs::TabInterface* const tab_interface =
+      tabs::TabInterface::GetFromContents(web_contents());
+  const tab_groups::SavedTabGroupWebContentsListener* wc_listener =
+      tab_interface->GetTabFeatures()->saved_tab_group_web_contents_listener();
+  if (wc_listener) {
+    if (const std::optional<tab_groups::DeferredTabState>& deferred_tab_state =
+            wc_listener->deferred_tab_state()) {
+      return deferred_tab_state.value().favicon();
+    }
+  }
+
   return ui::ImageModel::FromImage(
       favicon::TabFaviconFromWebContents(web_contents()));
 }
diff --git a/chrome/browser/ui/tabs/tab_renderer_data.cc b/chrome/browser/ui/tabs/tab_renderer_data.cc
index 6de221d..5a1673c 100644
--- a/chrome/browser/ui/tabs/tab_renderer_data.cc
+++ b/chrome/browser/ui/tabs/tab_renderer_data.cc
@@ -17,7 +17,6 @@
 #include "chrome/browser/ui/tabs/public/tab_features.h"
 #include "chrome/browser/ui/tabs/saved_tab_groups/collaboration_messaging_tab_data.h"
 #include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_utils.h"
-#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_web_contents_listener.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
 #include "chrome/browser/ui/tabs/tab_utils.h"
@@ -82,19 +81,6 @@
   data.favicon = tab_ui_helper->GetFavicon();
   data.title = tab_ui_helper->GetTitle();
 
-  // If the tab is in a deferred state, override favicon and title data.
-  if (features) {
-    const tab_groups::SavedTabGroupWebContentsListener* wc_listener =
-        features->saved_tab_group_web_contents_listener();
-    if (wc_listener) {
-      if (const std::optional<tab_groups::DeferredTabState>&
-              deferred_tab_state = wc_listener->deferred_tab_state()) {
-        data.favicon = deferred_tab_state.value().favicon();
-        data.title = deferred_tab_state.value().title();
-      }
-    }
-  }
-
   // Tabbed web apps should use the app icon on the home tab.
   BrowserWindowInterface* browser = tab->GetBrowserWindowInterface();
 
diff --git a/chrome/browser/ui/views/autofill/payments/offer_notification_bubble_views_interactive_uitest.cc b/chrome/browser/ui/views/autofill/payments/offer_notification_bubble_views_interactive_uitest.cc
index f098dfb..9aa827b 100644
--- a/chrome/browser/ui/views/autofill/payments/offer_notification_bubble_views_interactive_uitest.cc
+++ b/chrome/browser/ui/views/autofill/payments/offer_notification_bubble_views_interactive_uitest.cc
@@ -169,28 +169,58 @@
 
 // TODO(crbug.com/40228302): Split parameterized tests that are
 // applicable for only one offer type.
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayCardLinked DISABLED_GPayCardLinked
+#else
+#define MAYBE_GPayCardLinked GPayCardLinked
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayCardLinked,
+    MAYBE_GPayCardLinked,
     OfferNotificationBubbleViewsInteractiveUiTest,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayCardLinked",
         AutofillOfferData::OfferType::GPAY_CARD_LINKED_OFFER,
     }));
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayCardLinkedWithNewPageAction \
+  DISABLED_GPayCardLinkedWithNewPageAction
+#else
+#define MAYBE_GPayCardLinkedWithNewPageAction GPayCardLinkedWithNewPageAction
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayCardLinkedWithNewPageAction,
+    MAYBE_GPayCardLinkedWithNewPageAction,
     OfferNotificationBubbleViewsInteractiveUiTest,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayCardLinked",
         AutofillOfferData::OfferType::GPAY_CARD_LINKED_OFFER,
         /*is_page_actions_migration_enabled=*/true,
     }));
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayPromoCode DISABLED_GPayPromoCode
+#else
+#define MAYBE_GPayPromoCode GPayPromoCode
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayPromoCode,
+    MAYBE_GPayPromoCode,
     OfferNotificationBubbleViewsInteractiveUiTest,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayPromoCode", AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER}));
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayPromoCodeWithNewPageAction \
+  DISABLED_GPayPromoCodeWithNewPageAction
+#else
+#define MAYBE_GPayPromoCodeWithNewPageAction GPayPromoCodeWithNewPageAction
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayPromoCodeWithNewPageAction,
+    MAYBE_GPayPromoCodeWithNewPageAction,
     OfferNotificationBubbleViewsInteractiveUiTest,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayPromoCode", AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER,
@@ -206,13 +236,28 @@
     command_line->AppendSwitch("disable-field-trial-config");
   }
 };
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayPromoCode DISABLED_GPayPromoCode
+#else
+#define MAYBE_GPayPromoCode GPayPromoCode
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayPromoCode,
+    MAYBE_GPayPromoCode,
     OfferNotificationBubbleViewsInteractiveUiTestNoTestingConfig,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayPromoCode", AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER}));
+
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_GPayPromoCodeWithNewPageAction \
+  DISABLED_GPayPromoCodeWithNewPageAction
+#else
+#define MAYBE_GPayPromoCodeWithNewPageAction GPayPromoCodeWithNewPageAction
+#endif
 INSTANTIATE_TEST_SUITE_P(
-    GPayPromoCodeWithNewPageAction,
+    MAYBE_GPayPromoCodeWithNewPageAction,
     OfferNotificationBubbleViewsInteractiveUiTestNoTestingConfig,
     testing::Values(OfferNotificationBubbleViewsInteractiveUiTestData{
         "GPayPromoCode", AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER,
@@ -307,8 +352,14 @@
 // 5. Switches to the blank site. Makes sure the bubble and icon will be gone.
 // 6. Switches to merchant site 2. Makes sure the icon is visible but the bubble
 // is not, since we have shown the offer bubble in the tab of merchant site 1.
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_CrossTabTracking DISABLED_CrossTabTracking
+#else
+#define MAYBE_CrossTabTracking CrossTabTracking
+#endif
 IN_PROC_BROWSER_TEST_P(OfferNotificationBubbleViewsInteractiveUiTest,
-                       CrossTabTracking) {
+                       MAYBE_CrossTabTracking) {
   SetUpOfferDataWithDomains(test_offer_type_,
                             {GetUrl("www.merchantsite1.test", "/"),
                              GetUrl("www.merchantsite2.test", "/")});
@@ -370,8 +421,14 @@
 }
 
 // Tests that bubble behaves correctly after user dismisses it.
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_DismissBubble DISABLED_DismissBubble
+#else
+#define MAYBE_DismissBubble DismissBubble
+#endif
 IN_PROC_BROWSER_TEST_P(OfferNotificationBubbleViewsInteractiveUiTest,
-                       DismissBubble) {
+                       MAYBE_DismissBubble) {
   // Applies to card-linked offers only, as promo code offers do not have an OK
   // button.
   if (test_offer_type_ !=
@@ -558,8 +615,14 @@
       1);
 }
 
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_ShowGPayPromoCodeBubble DISABLED_ShowGPayPromoCodeBubble
+#else
+#define MAYBE_ShowGPayPromoCodeBubble ShowGPayPromoCodeBubble
+#endif
 IN_PROC_BROWSER_TEST_P(OfferNotificationBubbleViewsInteractiveUiTest,
-                       ShowGPayPromoCodeBubble) {
+                       MAYBE_ShowGPayPromoCodeBubble) {
   // Applies to GPay promo code offers only.
   if (test_offer_type_ != AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER) {
     return;
@@ -587,8 +650,17 @@
       GURL(GetDefaultTestDetailsUrlString()));
 }
 
-IN_PROC_BROWSER_TEST_P(OfferNotificationBubbleViewsInteractiveUiTest,
-                       ReshowOfferNotificationBubble_OfferDeletedBetweenShows) {
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_ReshowOfferNotificationBubble_OfferDeletedBetweenShows \
+  DISABLED_ReshowOfferNotificationBubble_OfferDeletedBetweenShows
+#else
+#define MAYBE_ReshowOfferNotificationBubble_OfferDeletedBetweenShows \
+  ReshowOfferNotificationBubble_OfferDeletedBetweenShows
+#endif
+IN_PROC_BROWSER_TEST_P(
+    OfferNotificationBubbleViewsInteractiveUiTest,
+    MAYBE_ReshowOfferNotificationBubble_OfferDeletedBetweenShows) {
   // Applies to GPay promo code offers and card linked offers only.
   if (test_offer_type_ != AutofillOfferData::OfferType::GPAY_PROMO_CODE_OFFER &&
       test_offer_type_ !=
@@ -631,8 +703,14 @@
   }
 }
 
+// TODO(crbug.com/416010106): Flaky failures.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_IconViewAccessibleName DISABLED_IconViewAccessibleName
+#else
+#define MAYBE_IconViewAccessibleName IconViewAccessibleName
+#endif
 IN_PROC_BROWSER_TEST_P(OfferNotificationBubbleViewsInteractiveUiTest,
-                       IconViewAccessibleName) {
+                       MAYBE_IconViewAccessibleName) {
   EXPECT_EQ(GetOfferNotificationPageActionView()
                 ->GetViewAccessibility()
                 .GetCachedName(),
diff --git a/chrome/browser/ui/views/chrome_views_delegate_win.cc b/chrome/browser/ui/views/chrome_views_delegate_win.cc
index ebb4396..fd9ccdd9 100644
--- a/chrome/browser/ui/views/chrome_views_delegate_win.cc
+++ b/chrome/browser/ui/views/chrome_views_delegate_win.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/ui/views/native_widget_factory.h"
 #include "chrome/browser/win/app_icon.h"
 #include "components/keep_alive_registry/scoped_keep_alive.h"
+#include "ui/views/widget/widget_delegate.h"
 
 namespace {
 
@@ -151,6 +152,11 @@
       native_widget_type = NativeWidgetType::DESKTOP_NATIVE_WIDGET_AURA;
     }
   }
+
+  if (params->delegate && params->delegate->use_desktop_widget_override()) {
+    native_widget_type = NativeWidgetType::DESKTOP_NATIVE_WIDGET_AURA;
+  }
+
   return ::CreateNativeWidget(native_widget_type, params, delegate);
 }
 
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc
index 89df12a..69beeec 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc
@@ -7,7 +7,6 @@
 #include "chrome/browser/media/webrtc/desktop_media_list.h"
 #include "chrome/browser/ui/views/desktop_capture/desktop_media_list_view.h"
 #include "chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h"
-#include "chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
@@ -58,10 +57,13 @@
     DesktopMediaSourceViewStyle style)
     : parent_(parent), source_id_(source_id), selected_(false) {
   icon_view_ = AddChildView(std::make_unique<views::ImageView>());
-  image_view_ = AddChildView(std::make_unique<RoundedCornerImageView>());
+  image_view_ = AddChildView(std::make_unique<views::ImageView>());
   label_ = AddChildView(std::make_unique<views::Label>());
   icon_view_->SetCanProcessEventsWithinSubtree(false);
   image_view_->SetCanProcessEventsWithinSubtree(false);
+  image_view_->SetCornerRadius(
+      views::LayoutProvider::Get()->GetCornerRadiusMetric(
+          views::Emphasis::kMedium));
   SetFocusBehavior(FocusBehavior::ALWAYS);
   SetStyle(style);
   views::FocusRing::Install(this);
diff --git a/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.cc b/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.cc
deleted file mode 100644
index f139aba..0000000
--- a/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h"
-
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/geometry/skia_conversions.h"
-#include "ui/views/layout/layout_provider.h"
-
-RoundedCornerImageView::RoundedCornerImageView() {
-  SetCanProcessEventsWithinSubtree(false);
-}
-
-void RoundedCornerImageView::OnPaint(gfx::Canvas* canvas) {
-  SkPath mask;
-  CHECK(GetLayoutProvider());
-  const int corner_radius =
-      GetLayoutProvider()->GetCornerRadiusMetric(views::Emphasis::kMedium);
-  mask.addRoundRect(gfx::RectToSkRect(GetImageBounds()), corner_radius,
-                    corner_radius);
-  canvas->ClipPath(mask, true);
-  ImageView::OnPaint(canvas);
-}
-
-BEGIN_METADATA(RoundedCornerImageView)
-END_METADATA
diff --git a/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h b/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h
deleted file mode 100644
index 6b64306..0000000
--- a/chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_ROUNDED_CORNER_IMAGE_VIEW_H_
-#define CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_ROUNDED_CORNER_IMAGE_VIEW_H_
-
-#include "ui/base/metadata/metadata_impl_macros.h"
-#include "ui/views/controls/image_view.h"
-
-// TODO(crbug.com/40273922): Add support for rounded image corners to ImageView
-class RoundedCornerImageView : public views::ImageView {
-  METADATA_HEADER(RoundedCornerImageView, views::ImageView)
-
- public:
-  RoundedCornerImageView();
-
-  RoundedCornerImageView(const RoundedCornerImageView&) = delete;
-  RoundedCornerImageView& operator=(const RoundedCornerImageView&) = delete;
-
-  ~RoundedCornerImageView() override = default;
-
- protected:
-  // views::ImageView:
-  void OnPaint(gfx::Canvas* canvas) override;
-};
-
-#endif  // CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_ROUNDED_CORNER_IMAGE_VIEW_H_
diff --git a/chrome/browser/ui/views/desktop_capture/share_this_tab_source_view.cc b/chrome/browser/ui/views/desktop_capture/share_this_tab_source_view.cc
index dedd725..d1524b2 100644
--- a/chrome/browser/ui/views/desktop_capture/share_this_tab_source_view.cc
+++ b/chrome/browser/ui/views/desktop_capture/share_this_tab_source_view.cc
@@ -13,7 +13,6 @@
 #include "base/task/thread_pool.h"
 #include "chrome/browser/favicon/favicon_utils.h"
 #include "chrome/browser/media/webrtc/desktop_media_picker_utils.h"
-#include "chrome/browser/ui/views/desktop_capture/rounded_corner_image_view.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_widget_host_view.h"
@@ -24,6 +23,7 @@
 #include "ui/gfx/image/image_skia_operations.h"
 #include "ui/gfx/text_constants.h"
 #include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/layout_provider.h"
 
 namespace {
 
@@ -91,7 +91,11 @@
   throbber_->SetBoundsRect(kThrobberRect);
   throbber_->Start();
 
-  image_view_ = AddChildView(std::make_unique<RoundedCornerImageView>());
+  image_view_ = AddChildView(std::make_unique<views::ImageView>());
+  image_view_->SetCanProcessEventsWithinSubtree(false);
+  image_view_->SetCornerRadius(
+      views::LayoutProvider::Get()->GetCornerRadiusMetric(
+          views::Emphasis::kMedium));
   image_view_->SetVisible(false);
   image_view_->SetBoundsRect(kPreviewRect);
 
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.cc b/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.cc
index d94562f..fcccede 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.cc
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h"
 
 #include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/extensions/extension_ui_util.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_window.h"
@@ -12,9 +13,23 @@
 #include "chrome/browser/ui/views/extensions/extensions_request_access_button.h"
 #include "chrome/browser/ui/views/extensions/extensions_toolbar_button.h"
 #include "chrome/browser/ui/views/extensions/extensions_toolbar_container.h"
+#include "chrome/common/pref_names.h"
 #include "components/user_education/common/feature_promo/feature_promo_controller.h"
+#include "extensions/browser/extension_util.h"
 #include "extensions/common/extension_features.h"
 
+namespace {
+// If true, block the Extensions Zero State Promo IPH from launching, to
+// avoid a race condition in test environments.
+bool g_block_zero_state_promo_for_testing = false;
+}  // namespace
+
+// static
+base::AutoReset<bool>
+ExtensionsToolbarContainerViewController::BlockZeroStatePromoForTesting() {
+  return base::AutoReset<bool>(&g_block_zero_state_promo_for_testing, true);
+}
+
 ExtensionsToolbarContainerViewController::
     ExtensionsToolbarContainerViewController(
         Browser* browser,
@@ -79,6 +94,18 @@
     browser_->window()->MaybeShowFeaturePromo(
         feature_engagement::kIPHExtensionsMenuFeature);
   }
+
+  // The Extensions Zero State promo prompts users without extensions to
+  // explore the Chrome Web Store.
+  //
+  // TODO(crbug.com/417543907): find a less busy method to trigger the zero
+  // state promo IPH.
+  if (!g_block_zero_state_promo_for_testing &&
+      !extensions::util::AnyCurrentlyInstalledExtensionIsFromWebstore(
+          browser_->profile())) {
+    browser_->window()->MaybeShowFeaturePromo(
+        feature_engagement::kIPHExtensionsZeroStatePromoFeature);
+  }
 }
 
 void ExtensionsToolbarContainerViewController::UpdateRequestAccessButton() {
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h b/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h
index 88c74c5..ce6bda6 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h
@@ -20,6 +20,26 @@
   static constexpr int kFlexOrderRequestAccessButton = 2;
   static constexpr int kFlexOrderActionView = 3;
 
+  // Returns a scope object to block launching the Extensions Zero State
+  // Promo IPH.
+  //
+  // In a live environment, the Extensions Zero State Promo IPH will only open
+  // after at least 10 minutes into the browsing session.
+  //
+  // When running InProcessBrowserTest, the IPH can trigger as soon as the
+  // browser is constructed. When the IPH is shown, it takes focus away from
+  // the browser, and causes tests to time out, as
+  // InProcessBrowserTest::PreRunTestOnMainThread waits for the browser to
+  // come to focus.
+  //
+  // This global variable allows the In Process Browser Tests that trigger
+  // the IPH to avoid this race condition, by suppressing the IPH until the
+  // browser initialization and set up steps are done.
+  //
+  // TODO(crbug.com/417543907) Move the Zero State Promo IPH trigger to a more
+  // appropriate location to avoid this race condition.
+  static base::AutoReset<bool> BlockZeroStatePromoForTesting();
+
   ExtensionsToolbarContainerViewController(
       Browser* browser,
       ExtensionsToolbarContainer* extensions_container);
diff --git a/chrome/browser/ui/views/frame/multi_contents_view.cc b/chrome/browser/ui/views/frame/multi_contents_view.cc
index 455d191..4766283 100644
--- a/chrome/browser/ui/views/frame/multi_contents_view.cc
+++ b/chrome/browser/ui/views/frame/multi_contents_view.cc
@@ -221,7 +221,10 @@
 
 void MultiContentsView::OnWebContentsFocused(views::WebView* web_view) {
   if (IsInSplitView()) {
-    if (GetInactiveContentsView()->web_contents() == web_view->web_contents()) {
+    // Check whether the widget is visible as otherwise during browser hide,
+    // inactive web contents gets focus. See crbug.com/419335827
+    if (GetInactiveContentsView()->web_contents() == web_view->web_contents() &&
+        GetWidget()->IsVisible()) {
       inactive_contents_focused_callback_.Run(web_view->web_contents());
     }
   }
diff --git a/chrome/browser/ui/views/omnibox/omnibox_match_cell_view.cc b/chrome/browser/ui/views/omnibox/omnibox_match_cell_view.cc
index 8a5ace7..f662ba4 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_match_cell_view.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_match_cell_view.cc
@@ -109,42 +109,6 @@
                                      corner_radius, corner_radius, flags);
 }
 
-////////////////////////////////////////////////////////////////////////////////
-// RoundedCornerImageView:
-
-class RoundedCornerImageView : public views::ImageView {
-  METADATA_HEADER(RoundedCornerImageView, views::ImageView)
-
- public:
-  RoundedCornerImageView();
-
-  RoundedCornerImageView(const RoundedCornerImageView&) = delete;
-  RoundedCornerImageView& operator=(const RoundedCornerImageView&) = delete;
-
-  ~RoundedCornerImageView() override = default;
-
- protected:
-  // views::ImageView:
-  void OnPaint(gfx::Canvas* canvas) override;
-};
-
-RoundedCornerImageView::RoundedCornerImageView() {
-  SetCanProcessEventsWithinSubtree(false);
-}
-
-void RoundedCornerImageView::OnPaint(gfx::Canvas* canvas) {
-  SkPath mask;
-  const int corner_radius = views::LayoutProvider::Get()->GetCornerRadiusMetric(
-      views::Emphasis::kMedium);
-  mask.addRoundRect(gfx::RectToSkRect(GetImageBounds()), corner_radius,
-                    corner_radius);
-  canvas->ClipPath(mask, true);
-  ImageView::OnPaint(canvas);
-}
-
-BEGIN_METADATA(RoundedCornerImageView)
-END_METADATA
-
 }  // namespace
 
 // Produces the largest centered square gfx::Rect that fits within a rectangle
@@ -225,7 +189,11 @@
 
 OmniboxMatchCellView::OmniboxMatchCellView(OmniboxResultView* result_view) {
   icon_view_ = AddChildView(std::make_unique<views::ImageView>());
-  answer_image_view_ = AddChildView(std::make_unique<RoundedCornerImageView>());
+  answer_image_view_ = AddChildView(std::make_unique<views::ImageView>());
+  answer_image_view_->SetCanProcessEventsWithinSubtree(false);
+  answer_image_view_->SetCornerRadius(
+      views::LayoutProvider::Get()->GetCornerRadiusMetric(
+          views::Emphasis::kMedium));
   tail_suggest_ellipse_view_ =
       AddChildView(std::make_unique<OmniboxTextView>(result_view));
   tail_suggest_ellipse_view_->SetText(AutocompleteMatch::kEllipsis);
diff --git a/chrome/browser/ui/views/passwords/password_save_update_view.cc b/chrome/browser/ui/views/passwords/password_save_update_view.cc
index ced47c5c..662ae0e5 100644
--- a/chrome/browser/ui/views/passwords/password_save_update_view.cc
+++ b/chrome/browser/ui/views/passwords/password_save_update_view.cc
@@ -170,6 +170,10 @@
       extra_view_->SetCallback(
           base::BindOnce(button_clicked, base::Unretained(this),
                          &Controller::OnNeverForThisSiteClicked));
+
+      // The third button will usually stretch the bubble beyond its intended
+      // width. Permit the bubble to use vertical buttons if this happens.
+      set_allow_vertical_buttons(true);
     } else {
       // 2-button save dialog variant.
       SetCancelCallback(base::BindOnce(button_clicked, base::Unretained(this),
diff --git a/chrome/browser/ui/views/profiles/avatar_toolbar_button_browsertest.cc b/chrome/browser/ui/views/profiles/avatar_toolbar_button_browsertest.cc
index 816d4e8a..c24f519 100644
--- a/chrome/browser/ui/views/profiles/avatar_toolbar_button_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/avatar_toolbar_button_browsertest.cc
@@ -2592,7 +2592,7 @@
 }
 
 // TODO(crbug.com/360106845): Fix flaky test and re-enable.
-#if BUILDFLAG(IS_WIN)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
 #define MAYBE_SigninPausedFromWebSignoutThenRestartChrome \
   DISABLED_SigninPausedFromWebSignoutThenRestartChrome
 #else
diff --git a/chrome/browser/ui/views/profiles/first_run_flow_controller_dice.cc b/chrome/browser/ui/views/profiles/first_run_flow_controller_dice.cc
index d709279d..fece831 100644
--- a/chrome/browser/ui/views/profiles/first_run_flow_controller_dice.cc
+++ b/chrome/browser/ui/views/profiles/first_run_flow_controller_dice.cc
@@ -26,6 +26,7 @@
 #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h"
 #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/profiles/profile_management_flow_controller.h"
 #include "chrome/browser/ui/views/profiles/profile_management_flow_controller_impl.h"
@@ -45,6 +46,12 @@
 #include "google_apis/gaia/core_account_id.h"
 #include "url/gurl.h"
 
+#if BUILDFLAG(IS_WIN)
+#include "chrome/browser/win/taskbar_manager.h"
+#include "chrome/installer/util/install_util.h"
+#include "chrome/installer/util/shell_util.h"
+#endif
+
 namespace {
 
 constexpr base::TimeDelta kDefaultBrowserCheckTimeout = base::Seconds(2);
@@ -97,6 +104,12 @@
   }
 }
 
+#if BUILDFLAG(IS_WIN)
+void PinToTaskbarResult(bool result) {
+  base::UmaHistogramBoolean("Windows.TaskbarPinFromFRESucceeded", result);
+}
+#endif  // BUILDFLAG(IS_WIN)
+
 class IntroStepController : public ProfileManagementStepController {
  public:
   explicit IntroStepController(
@@ -246,6 +259,21 @@
                        weak_ptr_factory_.GetWeakPtr())));
   }
 
+  void OnCanPinToTaskbarResult(bool can_pin) {
+    can_pin_ = can_pin;
+    if (can_pin) {
+      // Change subtitle if Chrome can be pinned to the taskbar.
+      auto* intro_ui = host()
+                           ->GetPickerContents()
+                           ->GetWebUI()
+                           ->GetController()
+                           ->GetAs<IntroUI>();
+      CHECK(intro_ui);
+      intro_ui->SetCanPinToTaskbar(can_pin);
+    }
+    std::move(show_default_browser_screen_callback_).Run();
+  }
+
   void OnStepCompleted(DefaultBrowserChoice choice) {
     if (choice == DefaultBrowserChoice::kClickSetAsDefault) {
       CHECK(!IsDefaultBrowserDisabledByPolicy());
@@ -254,6 +282,13 @@
       // freed once all its tasks have finished.
       base::MakeRefCounted<shell_integration::DefaultBrowserWorker>()
           ->StartSetAsDefault(base::BindOnce(&MaybeLogSetAsDefaultSuccess));
+#if BUILDFLAG(IS_WIN)
+      if (can_pin_) {
+        browser_util::PinAppToTaskbar(
+            ShellUtil::GetBrowserModelId(InstallUtil::IsPerUserInstall()),
+            base::BindOnce(&PinToTaskbarResult));
+      }
+#endif  // BUILDFLAG(IS_WIN)
     }
     base::UmaHistogramEnumeration("ProfilePicker.FirstRun.DefaultBrowser",
                                   choice);
@@ -275,6 +310,20 @@
         state == shell_integration::OTHER_MODE_IS_DEFAULT;
 
     if (should_show_default_browser_step) {
+#if BUILDFLAG(IS_WIN)
+      // Check if Chrome can pin to the taskbar, which is an async call. When it
+      // finishes, the result will be recorded and
+      // `show_default_browser_screen_callback_` will be run.
+      if (base::FeatureList::IsEnabled(
+              features::kOfferPinToTaskbarInFirstRunExperience)) {
+        browser_util::ShouldOfferToPin(
+            ShellUtil::GetBrowserModelId(InstallUtil::IsPerUserInstall()),
+            base::BindOnce(
+                &DefaultBrowserStepController::OnCanPinToTaskbarResult,
+                base::Unretained(this)));
+        return;
+      }
+#endif  // BUILDFLAG(IS_WIN)
       std::move(show_default_browser_screen_callback_).Run();
     } else {
       std::move(step_completed_callback_)
@@ -345,6 +394,9 @@
   // `step_completed_callback_`.
   StepSwitchFinishedCallback switch_from_previous_step_finished_callback_;
 
+  // Whether or not Chrome be pinned to the taskbar.
+  bool can_pin_ = false;
+
   base::OnceClosure navigation_finished_closure_;
   base::CancelableOnceClosure default_browser_check_timeout_closure_;
   base::OnceCallback<void()> show_default_browser_screen_callback_;
diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
index 07816d4..b52cc0a 100644
--- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc
+++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
@@ -96,6 +96,7 @@
 #include "components/user_education/webui/help_bubble_handler.h"
 #include "components/user_education/webui/help_bubble_webui.h"
 #include "components/vector_icons/vector_icons.h"
+#include "extensions/common/extension_urls.h"
 #include "ui/base/interaction/element_identifier.h"
 #include "ui/base/interaction/element_tracker.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -120,6 +121,10 @@
 #include "chrome/browser/glic/resources/grit/glic_browser_resources.h"
 #endif  // BUILDFLAG(ENABLE_GLIC)
 
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h"
+#endif  // BUILDFLAG(ENABLE_EXTENSIONS)
+
 namespace {
 
 using Platforms = user_education::Metadata::Platforms;
@@ -609,6 +614,47 @@
           .SetMetadata(117, "emiliapaz@chromium.org",
                        "Triggered when an extension "
                        "requests access permission.")));
+
+  // kIPHExtensionsZeroStatePromoFeature
+  user_education::Metadata kIPHExtensionsZeroStatePromoFeatureMetaData =
+      user_education::Metadata(
+          140, "uwyiming@google.com",
+          "Triggered when a user has no extensions installed.");
+  switch (feature_engagement::kIPHExtensionsZeroStatePromoVariantParam.Get()) {
+    case feature_engagement::kCustomActionIph:
+      registry.RegisterFeature(std::move(
+          user_education::FeaturePromoSpecification::CreateForCustomAction(
+              feature_engagement::kIPHExtensionsZeroStatePromoFeature,
+              kToolbarAppMenuButtonElementId,
+              IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_DESCRIPTION,
+              IDS_EXTENSIONS_ZERO_STATE_PROMO_CUSTOM_ACTION_IPH_ACCEPT,
+              CreateNavigationAction(extension_urls::GetWebstoreLaunchURL()))
+              .SetCustomActionIsDefault(true)
+              .SetBubbleTitleText(IDS_EXTENSIONS_ZERO_STATE_PROMO_IPH_TITLE)
+              .SetMetadata(
+                  std::move(kIPHExtensionsZeroStatePromoFeatureMetaData))
+              .SetHighlightedMenuItem(
+                  ExtensionsMenuModel::kVisitChromeWebStoreMenuItem)));
+      break;
+    case feature_engagement::kCustomUiChipIph:
+    case feature_engagement::kCustomUIPlainLinkIph:
+      registry.RegisterFeature(std::move(
+          user_education::FeaturePromoSpecification::CreateForCustomUi(
+              feature_engagement::kIPHExtensionsZeroStatePromoFeature,
+              kToolbarAppMenuButtonElementId,
+              MakeCustomWebUIHelpBubbleFactoryCallback<
+                  extensions::ZeroStatePromoController>(
+                  GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+              // No op. The individual buttons on the custom UI will perform the
+              // actual actions.
+              base::DoNothing())
+              .SetMetadata(
+                  std::move(kIPHExtensionsZeroStatePromoFeatureMetaData))
+              .SetBubbleArrow(HelpBubbleArrow::kTopRight)
+              .SetHighlightedMenuItem(
+                  ExtensionsMenuModel::kVisitChromeWebStoreMenuItem)));
+      break;
+  }
 #endif
 
   // kIPHLiveCaptionFeature:
diff --git a/chrome/browser/ui/views/user_education/custom_webui_help_bubble_controller.h b/chrome/browser/ui/views/user_education/custom_webui_help_bubble_controller.h
index 3f173e4..ea72790 100644
--- a/chrome/browser/ui/views/user_education/custom_webui_help_bubble_controller.h
+++ b/chrome/browser/ui/views/user_education/custom_webui_help_bubble_controller.h
@@ -58,9 +58,13 @@
     ControllerClass##Config()                                                \
         : DefaultTopChromeWebUIConfig(content::kChromeUIScheme, HostName) {} \
     ~ControllerClass##Config() override = default;                           \
-    bool ShouldAutoResizeHost() override {                                   \
-      return true;                                                           \
-    }                                                                        \
+    bool ShouldAutoResizeHost() override;                                    \
+  }
+
+// You need to do this in your custom help bubble WebUI controller `.cc` file.
+#define DEFINE_TOP_CHROME_WEBUI_CONFIG(ControllerClass)  \
+  bool ControllerClass##Config::ShouldAutoResizeHost() { \
+    return true;                                         \
   }
 
 // In order to be considered a controller for a custom help bubble WebUI, a
diff --git a/chrome/browser/ui/views/user_education/custom_webui_help_bubble_interactive_uitest.cc b/chrome/browser/ui/views/user_education/custom_webui_help_bubble_interactive_uitest.cc
index fba6f34..239a56fc 100644
--- a/chrome/browser/ui/views/user_education/custom_webui_help_bubble_interactive_uitest.cc
+++ b/chrome/browser/ui/views/user_education/custom_webui_help_bubble_interactive_uitest.cc
@@ -91,6 +91,7 @@
 };
 
 DECLARE_TOP_CHROME_WEBUI_CONFIG(TestWebUIHelpBubbleController, kTestWebUIHost);
+DEFINE_TOP_CHROME_WEBUI_CONFIG(TestWebUIHelpBubbleController)
 
 WEB_UI_CONTROLLER_TYPE_IMPL(TestWebUIHelpBubbleController)
 
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
index 7156ade..e42c6c5 100644
--- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
@@ -170,6 +170,7 @@
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/ui/views/apps/app_dialog/app_uninstall_dialog_view.h"
 #else
+#include "chrome/browser/apps/link_capturing/enable_link_capturing_infobar_delegate.h"
 #include "chrome/browser/ui/webui/app_home/app_home.mojom.h"
 #include "chrome/browser/ui/webui/app_home/app_home_page_handler.h"
 #include "chrome/browser/ui/webui/app_management/web_app_settings_page_handler.h"
@@ -1777,6 +1778,17 @@
   ASSERT_TRUE(app_browser_->is_type_app());
   ASSERT_TRUE(AppBrowserController::IsForWebApp(app_browser_, app_id));
   active_app_id_ = app_browser()->app_controller()->app_id();
+
+#if !BUILDFLAG(IS_CHROMEOS)
+  // In certain tests where window controls overlay is being tested, if the app
+  // does not capture navigations by default, the EnableLinkCapturingInfoBar
+  // shows up, preventing the WCO area from being drawn. Since current tests
+  // using the integration testing framework do not interact with that UI, close
+  // it to prevent WCO related tests from flaking.
+  apps::EnableLinkCapturingInfoBarDelegate::RemoveInfoBar(
+      app_browser_->tab_strip_model()->GetActiveWebContents());
+#endif  // !BUILDFLAG(IS_CHROMEOS)
+
   AfterStateChangeAction();
 }
 
diff --git a/chrome/browser/ui/web_applications/BUILD.gn b/chrome/browser/ui/web_applications/BUILD.gn
index 4d05a98..08d23b8 100644
--- a/chrome/browser/ui/web_applications/BUILD.gn
+++ b/chrome/browser/ui/web_applications/BUILD.gn
@@ -162,6 +162,9 @@
   ]
 
   if (is_chromeos) {
-    deps += [ "//chrome/browser/ash/fileapi" ]
+    deps += [
+      "//chrome/browser/ash/fileapi",
+      "//chrome/browser/sharesheet",
+    ]
   }
 }
diff --git a/chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.cc b/chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.cc
index 7552774..2426969 100644
--- a/chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.cc
+++ b/chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.cc
@@ -8,7 +8,6 @@
 
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/certificate_manager/certificate_manager_utils.h"
-#include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
 #include "chrome/browser/ui/webui/plural_string_handler.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/pref_names.h"
@@ -20,14 +19,10 @@
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
 #include "ui/webui/webui_util.h"
-
-#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 #include "chrome/browser/ui/webui/certificate_manager/client_cert_sources.h"
-#endif
 
 #if BUILDFLAG(IS_CHROMEOS)
 #include "chrome/browser/ui/webui/certificate_provisioning_ui_handler.h"
-#include "chrome/browser/ui/webui/certificates_handler.h"
 #include "components/user_manager/user_manager.h"
 #endif  // BUILDFLAG(IS_CHROMEOS)
 
@@ -37,26 +32,6 @@
     "https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/"
     "chrome_root_store/faq.md";
 
-#if BUILDFLAG(IS_CHROMEOS)
-void AddCertificateManagerStrings(content::WebUIDataSource* html_source) {
-  struct {
-    const char* name;
-    int id;
-  } localized_strings[] = {
-      {"cancel", IDS_CANCEL},
-      {"close", IDS_CLOSE},
-      {"edit", IDS_SETTINGS_EDIT},
-      {"moreActions", IDS_SETTINGS_MORE_ACTIONS},
-      {"ok", IDS_OK},
-  };
-  for (const auto& entry : localized_strings) {
-    html_source->AddLocalizedString(entry.name, entry.id);
-  }
-  certificate_manager::AddLocalizedStrings(html_source);
-}
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 void AddCertificateManagerV2Strings(content::WebUIDataSource* html_source) {
   static constexpr webui::LocalizedString kLocalizedStrings[] = {
       {"ok", IDS_OK},
@@ -179,7 +154,6 @@
   };
   html_source->AddLocalizedStrings(kLocalizedStrings);
 }
-#endif  // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 
 }  // namespace
 
@@ -195,63 +169,32 @@
   webui::EnableTrustedTypesCSP(source);
   webui::SetJSModuleDefaults(source);
 
+  source->AddResourcePath("", IDR_CERT_MANAGER_DIALOG_V2_HTML);
+  AddCertificateManagerV2Strings(source);
+  source->AddString("crsLearnMoreUrl", kCRSLearnMoreLink);
 #if BUILDFLAG(IS_CHROMEOS)
-  if (!base::FeatureList::IsEnabled(features::kEnableCertManagementUIV2)) {
-    // Serve the old certificate manager
-    AddCertificateManagerStrings(source);
-
-    source->UseStringsJs();
-    source->SetDefaultResource(IDR_CERT_MANAGER_DIALOG_HTML);
-
-    source->AddBoolean("isGuest",
-                       user_manager::UserManager::Get()->IsLoggedInAsGuest() ||
-                           user_manager::UserManager::Get()
-                               ->IsLoggedInAsManagedGuestSession());
-    source->AddBoolean(
-        "isKiosk", user_manager::UserManager::Get()->IsLoggedInAsAnyKioskApp());
-
-    web_ui->AddMessageHandler(
-        std::make_unique<certificate_manager::CertificatesHandler>());
-    web_ui->AddMessageHandler(
-        chromeos::cert_provisioning::CertificateProvisioningUiHandler::
-            CreateForProfile(profile));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
-    BUILDFLAG(IS_CHROMEOS)
-  if (base::FeatureList::IsEnabled(features::kEnableCertManagementUIV2)) {
-    source->AddResourcePath("", IDR_CERT_MANAGER_DIALOG_V2_HTML);
-    AddCertificateManagerV2Strings(source);
-    source->AddString("crsLearnMoreUrl", kCRSLearnMoreLink);
-#if BUILDFLAG(IS_CHROMEOS)
-    ClientCertManagementAccessControls client_cert_policy(profile);
-    source->AddBoolean(
-        "clientCertImportAllowed",
-        client_cert_policy.IsManagementAllowed(
-            ClientCertManagementAccessControls::kSoftwareBacked));
-    source->AddBoolean(
-        "clientCertImportAndBindAllowed",
-        client_cert_policy.IsManagementAllowed(
-            ClientCertManagementAccessControls::kHardwareBacked));
-    web_ui->AddMessageHandler(
-        chromeos::cert_provisioning::CertificateProvisioningUiHandler::
-            CreateForProfile(profile));
+  ClientCertManagementAccessControls client_cert_policy(profile);
+  source->AddBoolean("clientCertImportAllowed",
+                     client_cert_policy.IsManagementAllowed(
+                         ClientCertManagementAccessControls::kSoftwareBacked));
+  source->AddBoolean("clientCertImportAndBindAllowed",
+                     client_cert_policy.IsManagementAllowed(
+                         ClientCertManagementAccessControls::kHardwareBacked));
+  web_ui->AddMessageHandler(
+      chromeos::cert_provisioning::CertificateProvisioningUiHandler::
+          CreateForProfile(profile));
 #endif
 
-    auto plural_string_handler = std::make_unique<PluralStringHandler>();
-    plural_string_handler->AddLocalizedString(
-        "certificateManagerV2NumCerts",
-        IDS_SETTINGS_CERTIFICATE_MANAGER_V2_NUM_CERTS);
-    web_ui->AddMessageHandler(std::move(plural_string_handler));
-    PrefService* prefs = profile->GetPrefs();
-    source->AddBoolean("userCertsImportAllowed",
-                       IsCACertificateManagementAllowed(*prefs));
-  }
-#endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
-        // BUILDFLAG(IS_CHROMEOS)
+  auto plural_string_handler = std::make_unique<PluralStringHandler>();
+  plural_string_handler->AddLocalizedString(
+      "certificateManagerV2NumCerts",
+      IDS_SETTINGS_CERTIFICATE_MANAGER_V2_NUM_CERTS);
+  web_ui->AddMessageHandler(std::move(plural_string_handler));
+  PrefService* prefs = profile->GetPrefs();
+  source->AddBoolean("userCertsImportAllowed",
+                     IsCACertificateManagementAllowed(*prefs));
 }
 
-#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 void CertificateManagerUI::BindInterface(
     mojo::PendingReceiver<
         certificate_manager_v2::mojom::CertificateManagerPageHandlerFactory>
@@ -273,7 +216,6 @@
           std::move(client), std::move(handler), Profile::FromWebUI(web_ui()),
           web_ui()->GetWebContents());
 }
-#endif  // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 
 CertificateManagerUI::~CertificateManagerUI() = default;
 
diff --git a/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.cc b/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.cc
deleted file mode 100644
index 009ed45d..0000000
--- a/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
-
-#include "build/build_config.h"
-#include "chrome/grit/generated_resources.h"
-#include "components/strings/grit/components_strings.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "ui/base/webui/web_ui_util.h"
-#include "ui/webui/webui_util.h"
-
-namespace certificate_manager {
-
-void AddLocalizedStrings(content::WebUIDataSource* html_source) {
-  static constexpr webui::LocalizedString kLocalizedStrings[] = {
-      {"certificateManagerExpandA11yLabel",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_EXPAND_ACCESSIBILITY_LABEL},
-      {"certificateManagerNoCertificates",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_NO_CERTIFICATES},
-      {"certificateManagerYourCertificates",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES},
-      {"certificateManagerYourCertificatesDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES_DESCRIPTION},
-      {"certificateManagerServers", IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS},
-      {"certificateManagerServersDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS_DESCRIPTION},
-      {"certificateManagerAuthorities",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES},
-      {"certificateManagerAuthoritiesDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES_DESCRIPTION},
-      {"certificateManagerOthers", IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS},
-      {"certificateManagerOthersDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS_DESCRIPTION},
-      {"certificateManagerView", IDS_SETTINGS_CERTIFICATE_MANAGER_VIEW},
-      {"certificateManagerImport", IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT},
-      {"certificateManagerImportAndBind",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_AND_BIND},
-      {"certificateManagerExport", IDS_SETTINGS_CERTIFICATE_MANAGER_EXPORT},
-      {"certificateManagerDelete", IDS_SETTINGS_DELETE},
-      {"certificateManagerUntrusted",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_UNTRUSTED},
-      // CA trust edit dialog.
-      {"certificateManagerCaTrustEditDialogTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_TITLE},
-      {"certificateManagerCaTrustEditDialogDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_DESCRIPTION},
-      {"certificateManagerCaTrustEditDialogExplanation",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_EXPLANATION},
-      {"certificateManagerCaTrustEditDialogSsl",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_SSL},
-      {"certificateManagerCaTrustEditDialogEmail",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_EMAIL},
-      {"certificateManagerCaTrustEditDialogObjSign",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CA_TRUST_EDIT_DIALOG_OBJ_SIGN},
-      // Certificate delete confirmation dialog.
-      {"certificateManagerDeleteUserTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_USER_TITLE},
-      {"certificateManagerDeleteUserDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_USER_DESCRIPTION},
-      {"certificateManagerDeleteServerTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_SERVER_TITLE},
-      {"certificateManagerDeleteServerDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_SERVER_DESCRIPTION},
-      {"certificateManagerDeleteCaTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CA_TITLE},
-      {"certificateManagerDeleteCaDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CA_DESCRIPTION},
-      {"certificateManagerDeleteOtherTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_OTHER_TITLE},
-      // Encrypt/decrypt password dialogs.
-      {"certificateManagerEncryptPasswordTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_ENCRYPT_PASSWORD_TITLE},
-      {"certificateManagerDecryptPasswordTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_DECRYPT_PASSWORD_TITLE},
-      {"certificateManagerEncryptPasswordDescription",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_ENCRYPT_PASSWORD_DESCRIPTION},
-      {"certificateManagerPassword", IDS_SETTINGS_CERTIFICATE_MANAGER_PASSWORD},
-      {"certificateManagerConfirmPassword",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_CONFIRM_PASSWORD},
-      {"certificateImportErrorFormat",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_FORMAT},
-#if BUILDFLAG(IS_CHROMEOS)
-      {"certificateProvisioningListHeader",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LIST_HEADER},
-      {"certificateProvisioningRefresh",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_REFRESH},
-      {"certificateProvisioningReset",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_RESET},
-      {"certificateProvisioningDetails",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_DETAILS},
-      {"certificateProvisioningAdvancedSectionTitle",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_ADVANCED},
-      {"certificateProvisioningProcessId",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_PROCESS_ID},
-      {"certificateProvisioningProfileName",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_NAME},
-      {"certificateProvisioningProfileId",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_CERTIFICATE_PROFILE_ID},
-      {"certificateProvisioningStatus",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS},
-      {"certificateProvisioningStatusId",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_STATUS_ID},
-      {"certificateProvisioningLastUpdate",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UPDATE},
-      {"certificateProvisioningLastUnsuccessfulStatus",
-       IDS_SETTINGS_CERTIFICATE_MANAGER_PROVISIONING_LAST_UNSUCCESSFUL_STATUS},
-      {"certificateProvisioningPublicKey", IDS_CERT_DETAILS_SUBJECT_KEY},
-#endif  // BUILDFLAG(IS_CHROMEOS)
-      // For A11y.
-      {"menu", IDS_MENU},
-  };
-  html_source->AddLocalizedStrings(kLocalizedStrings);
-}
-
-}  // namespace certificate_manager
diff --git a/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h b/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h
deleted file mode 100644
index d0b3d1c..0000000
--- a/chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CERTIFICATE_MANAGER_LOCALIZED_STRINGS_PROVIDER_H_
-#define CHROME_BROWSER_UI_WEBUI_CERTIFICATE_MANAGER_LOCALIZED_STRINGS_PROVIDER_H_
-
-namespace content {
-class WebUIDataSource;
-}
-
-namespace certificate_manager {
-
-// Adds the strings needed for the certificate_manager component to
-// |html_source|. String ids correspond to ids in
-// ui/webui/resources/cr_components/certificate_manager/.
-void AddLocalizedStrings(content::WebUIDataSource* html_source);
-
-}  // namespace certificate_manager
-
-#endif  // CHROME_BROWSER_UI_WEBUI_CERTIFICATE_MANAGER_LOCALIZED_STRINGS_PROVIDER_H_
diff --git a/chrome/browser/ui/webui/certificates_handler.cc b/chrome/browser/ui/webui/certificates_handler.cc
index 69a8d9a..ca330245 100644
--- a/chrome/browser/ui/webui/certificates_handler.cc
+++ b/chrome/browser/ui/webui/certificates_handler.cc
@@ -4,1324 +4,18 @@
 
 #include "chrome/browser/ui/webui/certificates_handler.h"
 
-#include <errno.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#include <algorithm>
-#include <map>
-#include <utility>
-#include <vector>
-
-#include "base/files/file_util.h"  // for FileAccessProvider
-#include "base/functional/bind.h"
-#include "base/functional/callback_helpers.h"
-#include "base/i18n/string_compare.h"
-#include "base/memory/raw_ptr.h"
-#include "base/posix/safe_strerror.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/task/task_traits.h"
-#include "base/task/thread_pool.h"
-#include "base/values.h"
-#include "build/build_config.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/certificate_viewer.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/certificate_dialogs.h"
-#include "chrome/browser/ui/chrome_select_file_policy.h"
-#include "chrome/browser/ui/crypto_module_password_dialog_nss.h"
-#include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_webui.h"
-#include "chrome/common/net/x509_certificate_model_nss.h"
 #include "chrome/common/pref_names.h"
-#include "chrome/grit/generated_resources.h"
-#include "components/file_access/scoped_file_access.h"
-#include "components/file_access/scoped_file_access_delegate.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/pref_service.h"
-#include "content/public/browser/web_contents.h"
-#include "net/base/net_errors.h"
-#include "net/cert/x509_certificate.h"
-#include "net/cert/x509_util_nss.h"
-#include "third_party/boringssl/src/include/openssl/bytestring.h"
-#include "third_party/boringssl/src/include/openssl/span.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/shell_dialogs/selected_file_info.h"
-
-using base::UTF8ToUTF16;
-
-namespace {
-
-// Field names for communicating certificate info to JS.
-static const char kCertificatesHandlerEmailField[] = "email";
-static const char kCertificatesHandlerExtractableField[] = "extractable";
-static const char kCertificatesHandlerKeyField[] = "id";
-static const char kCertificatesHandlerNameField[] = "name";
-static const char kCertificatesHandlerObjSignField[] = "objSign";
-static const char kCertificatesHandlerPolicyInstalledField[] = "policy";
-static const char kCertificatesHandlerWebTrustAnchorField[] = "webTrustAnchor";
-static const char kCertificatesHandlerCanBeDeletedField[] = "canBeDeleted";
-static const char kCertificatesHandlerCanBeEditedField[] = "canBeEdited";
-static const char kCertificatesHandlerSslField[] = "ssl";
-static const char kCertificatesHandlerSubnodesField[] = "subnodes";
-static const char kCertificatesHandlerContainsPolicyCertsField[] =
-    "containsPolicyCerts";
-static const char kCertificatesHandlerUntrustedField[] = "untrusted";
-
-// Field names for communicating erros to JS.
-static const char kCertificatesHandlerCertificateErrors[] = "certificateErrors";
-static const char kCertificatesHandlerErrorDescription[] = "description";
-static const char kCertificatesHandlerErrorField[] = "error";
-static const char kCertificatesHandlerErrorTitle[] = "title";
-
-std::string OrgNameToId(const std::string& org) {
-  return "org-" + org;
-}
-
-struct DictionaryIdComparator {
-  explicit DictionaryIdComparator(icu::Collator* collator)
-      : collator_(collator) {}
-
-  bool operator()(const base::Value& a, const base::Value& b) const {
-    DCHECK(a.type() == base::Value::Type::DICT);
-    DCHECK(b.type() == base::Value::Type::DICT);
-    const base::Value::Dict& a_dict = a.GetDict();
-    const base::Value::Dict& b_dict = b.GetDict();
-    std::u16string a_str;
-    std::u16string b_str;
-    const std::string* ptr = a_dict.FindString(kCertificatesHandlerNameField);
-    if (ptr) {
-      a_str = base::UTF8ToUTF16(*ptr);
-    }
-    ptr = b_dict.FindString(kCertificatesHandlerNameField);
-    if (ptr) {
-      b_str = base::UTF8ToUTF16(*ptr);
-    }
-    if (collator_ == nullptr) {
-      return a_str < b_str;
-    }
-    return base::i18n::CompareString16WithCollator(*collator_, a_str, b_str) ==
-           UCOL_LESS;
-  }
-
-  raw_ptr<icu::Collator> collator_;
-};
-
-std::string NetErrorToString(int net_error) {
-  switch (net_error) {
-    // TODO(mattm): handle more cases.
-    case net::ERR_IMPORT_CA_CERT_NOT_CA:
-      return l10n_util::GetStringUTF8(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_NOT_CA);
-    case net::ERR_IMPORT_CERT_ALREADY_EXISTS:
-      return l10n_util::GetStringUTF8(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_CERT_ALREADY_EXISTS);
-    default:
-      return l10n_util::GetStringUTF8(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR);
-  }
-}
-
-// Struct to bind the Equals member function to an object for use in find_if.
-struct CertEquals {
-  explicit CertEquals(CERTCertificate* cert) : cert_(cert) {}
-  bool operator()(const scoped_refptr<net::X509Certificate> cert) const {
-    return net::x509_util::IsSameCertificate(cert_, cert.get());
-  }
-  raw_ptr<CERTCertificate> cert_;
-};
-
-// Determine if |data| could be a PFX Protocol Data Unit.
-// This only does the minimum parsing necessary to distinguish a PFX file from a
-// DER encoded Certificate.
-//
-// From RFC 7292 section 4:
-//   PFX ::= SEQUENCE {
-//       version     INTEGER {v3(3)}(v3,...),
-//       authSafe    ContentInfo,
-//       macData     MacData OPTIONAL
-//   }
-// From RFC 5280 section 4.1:
-//   Certificate  ::=  SEQUENCE  {
-//       tbsCertificate       TBSCertificate,
-//       signatureAlgorithm   AlgorithmIdentifier,
-//       signatureValue       BIT STRING  }
-//
-//  Certificate must be DER encoded, while PFX may be BER encoded.
-//  Therefore PFX can be distingushed by checking if the file starts with an
-//  indefinite SEQUENCE, or a definite SEQUENCE { INTEGER,  ... }.
-bool CouldBePFX(std::string_view data) {
-  if (data.size() < 4) {
-    return false;
-  }
-
-  // Indefinite length SEQUENCE.
-  if (data[0] == 0x30 && static_cast<uint8_t>(data[1]) == 0x80) {
-    return true;
-  }
-
-  // If the SEQUENCE is definite length, it can be parsed through the version
-  // tag using DER parser, since INTEGER must be definite length, even in BER.
-  CBS cbs = bssl::StringAsBytes(data);
-  CBS sequence, version;
-  return CBS_get_asn1(&cbs, &sequence, CBS_ASN1_SEQUENCE) &&
-         CBS_get_asn1(&sequence, &version, CBS_ASN1_INTEGER);
-}
-
-}  // namespace
 
 namespace certificate_manager {
 
-///////////////////////////////////////////////////////////////////////////////
-//  FileAccessProvider
-
-// TODO(mattm): Move to some shared location?
-class FileAccessProvider
-    : public base::RefCountedThreadSafe<FileAccessProvider> {
- public:
-  // The first parameter is 0 on success or errno on failure. The second
-  // parameter is read result.
-  typedef base::OnceCallback<void(const int*, const std::string*)> ReadCallback;
-
-  // The first parameter is 0 on success or errno on failure.
-  typedef base::OnceCallback<void(const int*)> WriteCallback;
-
-  base::CancelableTaskTracker::TaskId StartRead(
-      const base::FilePath& path,
-      ReadCallback callback,
-      base::CancelableTaskTracker* tracker,
-      file_access::ScopedFileAccess file_access);
-  base::CancelableTaskTracker::TaskId StartWrite(
-      const base::FilePath& path,
-      const std::string& data,
-      WriteCallback callback,
-      base::CancelableTaskTracker* tracker);
-
- private:
-  friend class base::RefCountedThreadSafe<FileAccessProvider>;
-  virtual ~FileAccessProvider() = default;
-
-  // Reads file at |path|. |saved_errno| is 0 on success or errno on failure.
-  // When success, |data| has file content.
-  void DoRead(const base::FilePath& path,
-              int* saved_errno,
-              std::string* data,
-              file_access::ScopedFileAccess file_access);
-  // Writes data to file at |path|. |saved_errno| is 0 on success or errno on
-  // failure.
-  void DoWrite(const base::FilePath& path,
-               const std::string& data,
-               int* saved_errno);
-};
-
-base::CancelableTaskTracker::TaskId FileAccessProvider::StartRead(
-    const base::FilePath& path,
-    ReadCallback callback,
-    base::CancelableTaskTracker* tracker,
-    file_access::ScopedFileAccess file_access) {
-  // Owned by reply callback posted below.
-  int* saved_errno = new int(0);
-  std::string* data = new std::string();
-
-  // Post task to a background sequence to read file.
-  auto task_runner = base::ThreadPool::CreateTaskRunner(
-      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
-  return tracker->PostTaskAndReply(
-      task_runner.get(), FROM_HERE,
-      base::BindOnce(&FileAccessProvider::DoRead, this, path, saved_errno, data,
-                     std::move(file_access)),
-      base::BindOnce(std::move(callback), base::Owned(saved_errno),
-                     base::Owned(data)));
-}
-
-base::CancelableTaskTracker::TaskId FileAccessProvider::StartWrite(
-    const base::FilePath& path,
-    const std::string& data,
-    WriteCallback callback,
-    base::CancelableTaskTracker* tracker) {
-  // Owned by reply callback posted below.
-  int* saved_errno = new int(0);
-
-  // This task blocks shutdown because it saves critical user data.
-  auto task_runner = base::ThreadPool::CreateTaskRunner(
-      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
-       base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
-  return tracker->PostTaskAndReply(
-      task_runner.get(), FROM_HERE,
-      base::BindOnce(&FileAccessProvider::DoWrite, this, path, data,
-                     saved_errno),
-      base::BindOnce(std::move(callback), base::Owned(saved_errno)));
-}
-
-// The `file_access` object for reading `path` should be in scope to
-// successfully read the file when Data Leak Prevention policies are enabled.
-void FileAccessProvider::DoRead(const base::FilePath& path,
-                                int* saved_errno,
-                                std::string* data,
-                                file_access::ScopedFileAccess file_access) {
-  bool success = base::ReadFileToString(path, data);
-  *saved_errno = success ? 0 : errno;
-}
-
-void FileAccessProvider::DoWrite(const base::FilePath& path,
-                                 const std::string& data,
-                                 int* saved_errno) {
-  if (base::WriteFile(path, data)) {
-    *saved_errno = 0;
-  } else {
-    *saved_errno = errno;
-  }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//  CertificatesHandler
-
-CertificatesHandler::CertificatesHandler()
-    : requested_certificate_manager_model_(false),
-      use_hardware_backed_(false),
-      file_access_provider_(base::MakeRefCounted<FileAccessProvider>()) {}
-
-CertificatesHandler::~CertificatesHandler() {
-  if (select_file_dialog_.get()) {
-    select_file_dialog_->ListenerDestroyed();
-  }
-  select_file_dialog_.reset();
-}
-
-void CertificatesHandler::RegisterMessages() {
-  web_ui()->RegisterMessageCallback(
-      "viewCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleViewCertificate,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "getCaCertificateTrust",
-      base::BindRepeating(&CertificatesHandler::HandleGetCATrust,
-                          base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
-      "editCaCertificateTrust",
-      base::BindRepeating(&CertificatesHandler::HandleEditCATrust,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "cancelImportExportCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleCancelImportExportProcess,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "exportPersonalCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleExportPersonal,
-                          base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
-      "exportPersonalCertificatePasswordSelected",
-      base::BindRepeating(
-          &CertificatesHandler::HandleExportPersonalPasswordSelected,
-          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "importPersonalCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleImportPersonal,
-                          base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
-      "importPersonalCertificatePasswordSelected",
-      base::BindRepeating(
-          &CertificatesHandler::HandleImportPersonalPasswordSelected,
-          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "importCaCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleImportCA,
-                          base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
-      "importCaCertificateTrustSelected",
-      base::BindRepeating(&CertificatesHandler::HandleImportCATrustSelected,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "importServerCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleImportServer,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "exportCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleExportCertificate,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "deleteCertificate",
-      base::BindRepeating(&CertificatesHandler::HandleDeleteCertificate,
-                          base::Unretained(this)));
-
-  web_ui()->RegisterMessageCallback(
-      "refreshCertificates",
-      base::BindRepeating(&CertificatesHandler::HandleRefreshCertificates,
-                          base::Unretained(this)));
-}
-
-void CertificatesHandler::CertificatesRefreshed() {
-  PopulateTree("personalCerts", net::USER_CERT);
-  PopulateTree("serverCerts", net::SERVER_CERT);
-  PopulateTree("caCerts", net::CA_CERT);
-  PopulateTree("otherCerts", net::OTHER_CERT);
-}
-
-void CertificatesHandler::FileSelected(const ui::SelectedFileInfo& file,
-                                       int index) {
-  CHECK(pending_operation_.has_value());
-  switch (*pending_operation_) {
-    case EXPORT_PERSONAL_FILE:
-      ExportPersonalFileSelected(file.path());
-      break;
-    case IMPORT_PERSONAL_FILE:
-      file_access::RequestFilesAccessForSystem(
-          {file.path()},
-          base::BindOnce(&CertificatesHandler::ImportPersonalFileSelected,
-                         weak_ptr_factory_.GetWeakPtr(), file.path()));
-      break;
-    case IMPORT_SERVER_FILE:
-      file_access::RequestFilesAccessForSystem(
-          {file.path()},
-          base::BindOnce(&CertificatesHandler::ImportServerFileSelected,
-                         weak_ptr_factory_.GetWeakPtr(), file.path()));
-      break;
-    case IMPORT_CA_FILE:
-      file_access::RequestFilesAccessForSystem(
-          {file.path()},
-          base::BindOnce(&CertificatesHandler::ImportCAFileSelected,
-                         weak_ptr_factory_.GetWeakPtr(), file.path()));
-      break;
-    default:
-      NOTREACHED();
-  }
-
-  select_file_dialog_.reset();
-  pending_operation_ = std::nullopt;
-}
-
-void CertificatesHandler::FileSelectionCanceled() {
-  ImportExportCleanup();
-  RejectCallback(base::Value());
-}
-
-void CertificatesHandler::HandleViewCertificate(const base::Value::List& args) {
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 0 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-  net::ScopedCERTCertificateList certs;
-  certs.push_back(net::x509_util::DupCERTCertificate(cert_info->cert()));
-  CertificateViewerDialog::ShowConstrained(
-      std::move(certs), web_ui()->GetWebContents(), GetParentWindow());
-}
-
-bool CertificatesHandler::AssignWebUICallbackId(const base::Value::List& args) {
-  CHECK_LE(1U, args.size());
-  if (!webui_callback_id_.empty()) {
-    return false;
-  }
-  webui_callback_id_ = args[0].GetString();
-  return true;
-}
-
-void CertificatesHandler::HandleGetCATrust(const base::Value::List& args) {
-  AllowJavascript();
-
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 1 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-
-  net::NSSCertDatabase::TrustBits trust_bits =
-      certificate_manager_model_->cert_db()->GetCertTrust(cert_info->cert(),
-                                                          net::CA_CERT);
-
-  ResolveCallback(
-      base::Value::Dict()
-          .Set(
-              kCertificatesHandlerSslField,
-              static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_SSL))
-          .Set(kCertificatesHandlerEmailField,
-               static_cast<bool>(trust_bits &
-                                 net::NSSCertDatabase::TRUSTED_EMAIL))
-          .Set(kCertificatesHandlerObjSignField,
-               static_cast<bool>(trust_bits &
-                                 net::NSSCertDatabase::TRUSTED_OBJ_SIGN)));
-}
-
-void CertificatesHandler::HandleEditCATrust(const base::Value::List& args) {
-  CHECK_EQ(5U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 1 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-
-  if (!CanEditCertificate(cert_info)) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SET_TRUST_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_NOT_ALLOWED));
-    return;
-  }
-
-  const bool trust_ssl = args[2].GetBool();
-  const bool trust_email = args[3].GetBool();
-  const bool trust_obj_sign = args[4].GetBool();
-
-  bool result = certificate_manager_model_->SetCertTrust(
-      cert_info->cert(), net::CA_CERT,
-      trust_ssl * net::NSSCertDatabase::TRUSTED_SSL +
-          trust_email * net::NSSCertDatabase::TRUSTED_EMAIL +
-          trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN);
-  if (!result) {
-    // TODO(mattm): better error messages?
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SET_TRUST_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR));
-  } else {
-    ResolveCallback(base::Value());
-  }
-}
-
-void CertificatesHandler::HandleExportPersonal(const base::Value::List& args) {
-  // Early return if the select file dialog is already active.
-  if (select_file_dialog_) {
-    return;
-  }
-
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 1 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-
-  selected_cert_list_.push_back(
-      net::x509_util::DupCERTCertificate(cert_info->cert()));
-
-  ui::SelectFileDialog::FileTypeInfo file_type_info;
-  file_type_info.extensions.resize(1);
-  file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12"));
-  file_type_info.extension_description_overrides.push_back(
-      l10n_util::GetStringUTF16(IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_FILES));
-  file_type_info.include_all_files = true;
-  select_file_dialog_ = ui::SelectFileDialog::Create(
-      this,
-      std::make_unique<ChromeSelectFilePolicy>(web_ui()->GetWebContents()));
-  pending_operation_ = EXPORT_PERSONAL_FILE;
-  select_file_dialog_->SelectFile(ui::SelectFileDialog::SELECT_SAVEAS_FILE,
-                                  std::u16string(), base::FilePath(),
-                                  &file_type_info, 1, FILE_PATH_LITERAL("p12"),
-                                  GetParentWindow());
-}
-
-void CertificatesHandler::ExportPersonalFileSelected(
-    const base::FilePath& path) {
-  file_path_ = path;
-  ResolveCallback(base::Value());
-}
-
-void CertificatesHandler::HandleExportPersonalPasswordSelected(
-    const base::Value::List& args) {
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-  password_ = UTF8ToUTF16(args[1].GetString());  // CHECKs if non-string.
-
-  // Currently, we don't support exporting more than one at a time.  If we do,
-  // this would need to either change this to use UnlockSlotsIfNecessary or
-  // change UnlockCertSlotIfNecessary to take a CertificateList.
-  CHECK_EQ(selected_cert_list_.size(), 1U);
-
-  // TODO(mattm): do something smarter about non-extractable keys
-  chrome::UnlockCertSlotIfNecessary(
-      selected_cert_list_[0].get(), kCryptoModulePasswordCertExport,
-      net::HostPortPair(),  // unused.
-      GetParentWindow(),
-      base::BindOnce(&CertificatesHandler::ExportPersonalSlotsUnlocked,
-                     base::Unretained(this)));
-}
-
-void CertificatesHandler::ExportPersonalSlotsUnlocked() {
-  std::string output;
-  int num_exported = certificate_manager_model_->cert_db()->ExportToPKCS12(
-      selected_cert_list_, password_, &output);
-  if (!num_exported) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_EXPORT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR));
-    ImportExportCleanup();
-    return;
-  }
-  file_access_provider_->StartWrite(
-      file_path_, output,
-      base::BindOnce(&CertificatesHandler::ExportPersonalFileWritten,
-                     base::Unretained(this)),
-      &tracker_);
-}
-
-void CertificatesHandler::ExportPersonalFileWritten(const int* write_errno) {
-  ImportExportCleanup();
-  if (*write_errno) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_EXPORT_ERROR_TITLE),
-        l10n_util::GetStringFUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_WRITE_ERROR_FORMAT,
-            UTF8ToUTF16(base::safe_strerror(*write_errno))));
-  } else {
-    ResolveCallback(base::Value());
-  }
-}
-
-void CertificatesHandler::HandleImportPersonal(const base::Value::List& args) {
-  // Early return if the select file dialog is already active.
-  if (select_file_dialog_) {
-    return;
-  }
-
-  // When the "allowed" value changes while user on the certificate manager
-  // page, the UI doesn't update without page refresh and user can still see and
-  // use import button. Because of this 'return' the button will do nothing.
-  if (!IsClientCertificateManagementAllowed(Slot::kUser)) {
-    return;
-  }
-
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-  use_hardware_backed_ = args[1].GetBool();
-
-  ui::SelectFileDialog::FileTypeInfo file_type_info;
-  file_type_info.extensions.resize(1);
-  file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12"));
-  file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pfx"));
-  file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("crt"));
-  file_type_info.extension_description_overrides.push_back(
-      l10n_util::GetStringUTF16(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_USAGE_SSL_CLIENT));
-  file_type_info.include_all_files = true;
-  select_file_dialog_ = ui::SelectFileDialog::Create(
-      this,
-      std::make_unique<ChromeSelectFilePolicy>(web_ui()->GetWebContents()));
-  pending_operation_ = IMPORT_PERSONAL_FILE;
-  select_file_dialog_->SelectFile(ui::SelectFileDialog::SELECT_OPEN_FILE,
-                                  std::u16string(), base::FilePath(),
-                                  &file_type_info, 1, FILE_PATH_LITERAL("p12"),
-                                  GetParentWindow());
-}
-
-void CertificatesHandler::ImportPersonalFileSelected(
-    const base::FilePath& path,
-    file_access::ScopedFileAccess file_access) {
-  file_access_provider_->StartRead(
-      path,
-      base::BindOnce(&CertificatesHandler::ImportPersonalFileRead,
-                     base::Unretained(this)),
-      &tracker_, std::move(file_access));
-}
-
-void CertificatesHandler::ImportPersonalFileRead(const int* read_errno,
-                                                 const std::string* data) {
-  if (*read_errno) {
-    ImportExportCleanup();
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringFUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_READ_ERROR_FORMAT,
-            UTF8ToUTF16(base::safe_strerror(*read_errno))));
-    return;
-  }
-
-  file_data_ = *data;
-
-  if (CouldBePFX(file_data_)) {
-    ResolveCallback(base::Value(true));
-    return;
-  }
-
-  // Non .p12/.pfx files are assumed to be single/chain certificates without
-  // private key data. The default extension according to spec is '.crt',
-  // however other extensions are also used in some places to represent these
-  // certificates.
-  int result = certificate_manager_model_->ImportUserCert(file_data_);
-  ImportExportCleanup();
-  int string_id;
-  switch (result) {
-    case net::OK:
-      ResolveCallback(base::Value(false));
-      return;
-    case net::ERR_NO_PRIVATE_KEY_FOR_CERT:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_MISSING_KEY;
-      break;
-    case net::ERR_CERT_INVALID:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_FILE;
-      break;
-    default:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR;
-      break;
-  }
-  RejectCallbackWithError(
-      l10n_util::GetStringUTF8(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_TITLE),
-      l10n_util::GetStringUTF8(string_id));
-}
-
-void CertificatesHandler::HandleImportPersonalPasswordSelected(
-    const base::Value::List& args) {
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-  password_ = UTF8ToUTF16(args[1].GetString());  // CHECKs if non-string.
-
-  if (use_hardware_backed_) {
-    slot_ = certificate_manager_model_->cert_db()->GetPrivateSlot();
-  } else {
-    slot_ = certificate_manager_model_->cert_db()->GetPublicSlot();
-  }
-
-  std::vector<crypto::ScopedPK11Slot> modules;
-  modules.push_back(crypto::ScopedPK11Slot(PK11_ReferenceSlot(slot_.get())));
-  chrome::UnlockSlotsIfNecessary(
-      std::move(modules), kCryptoModulePasswordCertImport,
-      net::HostPortPair(),  // unused.
-      GetParentWindow(),
-      base::BindOnce(&CertificatesHandler::ImportPersonalSlotUnlocked,
-                     base::Unretained(this)));
-}
-
-void CertificatesHandler::ImportPersonalSlotUnlocked() {
-  // Determine if the private key should be unextractable after the import.
-  // We do this by checking the value of |use_hardware_backed_| which is set
-  // to true if importing into a hardware module. Currently, this only happens
-  // for Chrome OS when the "Import and Bind" option is chosen.
-  bool is_extractable = !use_hardware_backed_;
-  certificate_manager_model_->ImportFromPKCS12(
-      slot_.get(), file_data_, password_, is_extractable,
-      base::BindOnce(&CertificatesHandler::ImportPersonalResultReceived,
-                     weak_ptr_factory_.GetWeakPtr()));
-  ImportExportCleanup();
-}
-
-void CertificatesHandler::ImportPersonalResultReceived(int net_result) {
-  int string_id;
-  switch (net_result) {
-    case net::OK:
-      ResolveCallback(base::Value());
-      return;
-    case net::ERR_PKCS12_IMPORT_BAD_PASSWORD:
-      // TODO(mattm): if the error was a bad password, we should reshow the
-      // password dialog after the user dismisses the error dialog.
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_BAD_PASSWORD;
-      break;
-    case net::ERR_PKCS12_IMPORT_INVALID_MAC:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_MAC;
-      break;
-    case net::ERR_PKCS12_IMPORT_INVALID_FILE:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_FILE;
-      break;
-    case net::ERR_PKCS12_IMPORT_UNSUPPORTED:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_UNSUPPORTED;
-      break;
-    default:
-      string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR;
-      break;
-  }
-  RejectCallbackWithError(
-      l10n_util::GetStringUTF8(
-          IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_TITLE),
-      l10n_util::GetStringUTF8(string_id));
-}
-
-void CertificatesHandler::HandleCancelImportExportProcess(
-    const base::Value::List& args) {
-  ImportExportCleanup();
-}
-
-void CertificatesHandler::ImportExportCleanup() {
-  file_path_.clear();
-  password_.clear();
-  file_data_.clear();
-  use_hardware_backed_ = false;
-  selected_cert_list_.clear();
-  slot_.reset();
-  tracker_.TryCancelAll();
-
-  // There may be pending file dialogs, we need to tell them that we've gone
-  // away so they don't try and call back to us.
-  if (select_file_dialog_.get()) {
-    select_file_dialog_->ListenerDestroyed();
-  }
-  select_file_dialog_.reset();
-  pending_operation_ = std::nullopt;
-}
-
-void CertificatesHandler::HandleImportServer(const base::Value::List& args) {
-  // Early return if the select file dialog is already active.
-  if (select_file_dialog_) {
-    return;
-  }
-
-  CHECK_EQ(1U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  select_file_dialog_ = ui::SelectFileDialog::Create(
-      this,
-      std::make_unique<ChromeSelectFilePolicy>(web_ui()->GetWebContents()));
-  pending_operation_ = IMPORT_SERVER_FILE;
-  ShowCertSelectFileDialog(select_file_dialog_.get(),
-                           ui::SelectFileDialog::SELECT_OPEN_FILE,
-                           base::FilePath(), GetParentWindow());
-}
-
-void CertificatesHandler::ImportServerFileSelected(
-    const base::FilePath& path,
-    file_access::ScopedFileAccess file_access) {
-  file_access_provider_->StartRead(
-      path,
-      base::BindOnce(&CertificatesHandler::ImportServerFileRead,
-                     base::Unretained(this)),
-      &tracker_, std::move(file_access));
-}
-
-void CertificatesHandler::ImportServerFileRead(const int* read_errno,
-                                               const std::string* data) {
-  if (*read_errno) {
-    ImportExportCleanup();
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringFUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_READ_ERROR_FORMAT,
-            UTF8ToUTF16(base::safe_strerror(*read_errno))));
-    return;
-  }
-
-  selected_cert_list_ = net::x509_util::CreateCERTCertificateListFromBytes(
-      base::as_byte_span(*data), net::X509Certificate::FORMAT_AUTO);
-  if (selected_cert_list_.empty()) {
-    ImportExportCleanup();
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CERT_PARSE_ERROR));
-    return;
-  }
-
-  net::NSSCertDatabase::ImportCertFailureList not_imported;
-  // TODO(mattm): Add UI for trust. http://crbug.com/76274
-  bool result = certificate_manager_model_->ImportServerCert(
-      selected_cert_list_, net::NSSCertDatabase::TRUST_DEFAULT, &not_imported);
-  if (!result) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR));
-  } else if (!not_imported.empty()) {
-    RejectCallbackWithImportError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE),
-        not_imported);
-  } else {
-    ResolveCallback(base::Value());
-  }
-  ImportExportCleanup();
-}
-
-void CertificatesHandler::HandleImportCA(const base::Value::List& args) {
-  // Early return if the select file dialog is already active.
-  if (select_file_dialog_) {
-    return;
-  }
-
-  // When the "allowed" value changes while user on the certificate manager
-  // page, the UI doesn't update without page refresh and user can still see and
-  // use import button. Because of this 'return' the button will do nothing.
-  if (!IsCACertificateManagementAllowed(CertificateSource::kImported)) {
-    return;
-  }
-
-  CHECK_EQ(1U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  select_file_dialog_ = ui::SelectFileDialog::Create(
-      this,
-      std::make_unique<ChromeSelectFilePolicy>(web_ui()->GetWebContents()));
-  pending_operation_ = IMPORT_CA_FILE;
-  ShowCertSelectFileDialog(select_file_dialog_.get(),
-                           ui::SelectFileDialog::SELECT_OPEN_FILE,
-                           base::FilePath(), GetParentWindow());
-}
-
-void CertificatesHandler::ImportCAFileSelected(
-    const base::FilePath& path,
-    file_access::ScopedFileAccess file_access) {
-  file_access_provider_->StartRead(
-      path,
-      base::BindOnce(&CertificatesHandler::ImportCAFileRead,
-                     base::Unretained(this)),
-      &tracker_, std::move(file_access));
-}
-
-void CertificatesHandler::ImportCAFileRead(const int* read_errno,
-                                           const std::string* data) {
-  if (*read_errno) {
-    ImportExportCleanup();
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringFUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_READ_ERROR_FORMAT,
-            UTF8ToUTF16(base::safe_strerror(*read_errno))));
-    return;
-  }
-
-  selected_cert_list_ = net::x509_util::CreateCERTCertificateListFromBytes(
-      base::as_byte_span(*data), net::X509Certificate::FORMAT_AUTO);
-  if (selected_cert_list_.empty()) {
-    ImportExportCleanup();
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CERT_PARSE_ERROR));
-    return;
-  }
-
-  CERTCertificate* root_cert =
-      certificate_manager_model_->cert_db()->FindRootInList(
-          selected_cert_list_);
-
-  // TODO(mattm): check here if root_cert is not a CA cert and show error.
-
-  base::Value cert_name(
-      x509_certificate_model::GetSubjectDisplayName(root_cert));
-  ResolveCallback(cert_name);
-}
-
-void CertificatesHandler::HandleImportCATrustSelected(
-    const base::Value::List& args) {
-  CHECK_EQ(4U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  const bool trust_ssl = args[1].GetBool();
-  const bool trust_email = args[2].GetBool();
-  const bool trust_obj_sign = args[3].GetBool();
-
-  // TODO(mattm): add UI for setting explicit distrust, too.
-  // http://crbug.com/128411
-  net::NSSCertDatabase::ImportCertFailureList not_imported;
-  bool result = certificate_manager_model_->ImportCACerts(
-      selected_cert_list_,
-      trust_ssl * net::NSSCertDatabase::TRUSTED_SSL +
-          trust_email * net::NSSCertDatabase::TRUSTED_EMAIL +
-          trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN,
-      &not_imported);
-  if (!result) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR));
-  } else if (!not_imported.empty()) {
-    RejectCallbackWithImportError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE),
-        not_imported);
-  } else {
-    ResolveCallback(base::Value());
-  }
-  ImportExportCleanup();
-}
-
-void CertificatesHandler::HandleExportCertificate(
-    const base::Value::List& args) {
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 0 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-
-  net::ScopedCERTCertificateList export_certs;
-  export_certs.push_back(net::x509_util::DupCERTCertificate(cert_info->cert()));
-  ShowCertExportDialog(web_ui()->GetWebContents(), GetParentWindow(),
-                       export_certs.begin(), export_certs.end());
-}
-
-void CertificatesHandler::HandleDeleteCertificate(
-    const base::Value::List& args) {
-  CHECK_EQ(2U, args.size());
-  if (!AssignWebUICallbackId(args)) {
-    RejectJavascriptCallback(base::Value(args[0].GetString()), base::Value());
-    return;
-  }
-
-  CertificateManagerModel::CertInfo* cert_info =
-      GetCertInfoFromCallbackArgs(args, 1 /* arg_index */);
-  if (!cert_info) {
-    return;
-  }
-
-  if (!CanDeleteCertificate(cert_info)) {
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CERT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_ERROR_NOT_ALLOWED));
-    return;
-  }
-
-  certificate_manager_model_->RemoveFromDatabase(
-      net::x509_util::DupCERTCertificate(cert_info->cert()),
-      base::BindOnce(&CertificatesHandler::OnCertificateDeleted,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void CertificatesHandler::OnCertificateDeleted(bool result) {
-  if (!result) {
-    // TODO(mattm): better error messages?
-    RejectCallbackWithError(
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CERT_ERROR_TITLE),
-        l10n_util::GetStringUTF8(
-            IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR));
-  } else {
-    ResolveCallback(base::Value());
-  }
-}
-
-void CertificatesHandler::OnCertificateManagerModelCreated(
-    std::unique_ptr<CertificateManagerModel> model) {
-  certificate_manager_model_ = std::move(model);
-  CertificateManagerModelReady();
-}
-
-void CertificatesHandler::CertificateManagerModelReady() {
-  if (IsJavascriptAllowed()) {
-    FireWebUIListener(
-        "client-import-allowed-changed",
-        base::Value(IsClientCertificateManagementAllowed(Slot::kUser)));
-    FireWebUIListener("ca-import-allowed-changed",
-                      base::Value(IsCACertificateManagementAllowed(
-                          CertificateSource::kImported)));
-  }
-  certificate_manager_model_->Refresh();
-}
-
-void CertificatesHandler::HandleRefreshCertificates(
-    const base::Value::List& args) {
-  AllowJavascript();
-
-  if (certificate_manager_model_) {
-    // Already have a model, the webui must be re-loading.  Just re-run the
-    // webui initialization.
-    CertificateManagerModelReady();
-    return;
-  }
-
-  if (!requested_certificate_manager_model_) {
-    // Request that a model be created.
-    CertificateManagerModel::Create(
-        Profile::FromWebUI(web_ui()), this,
-        base::BindOnce(&CertificatesHandler::OnCertificateManagerModelCreated,
-                       weak_ptr_factory_.GetWeakPtr()));
-    requested_certificate_manager_model_ = true;
-    return;
-  }
-
-  // We are already waiting for a CertificateManagerModel to be created, no need
-  // to do anything.
-}
-
-void CertificatesHandler::PopulateTree(const std::string& tab_name,
-                                       net::CertType type) {
-  std::unique_ptr<icu::Collator> collator;
-  UErrorCode error = U_ZERO_ERROR;
-  collator.reset(icu::Collator::createInstance(
-      icu::Locale(g_browser_process->GetApplicationLocale().c_str()), error));
-  if (U_FAILURE(error)) {
-    collator.reset();
-  }
-  DictionaryIdComparator comparator(collator.get());
-  CertificateManagerModel::OrgGroupingMap org_grouping_map;
-
-  certificate_manager_model_->FilterAndBuildOrgGroupingMap(type,
-                                                           &org_grouping_map);
-
-  base::Value::List nodes;
-  for (auto& org_grouping_map_entry : org_grouping_map) {
-    // Populate second level (certs).
-    base::Value::List subnodes;
-    bool contains_policy_certs = false;
-    for (auto& org_cert : org_grouping_map_entry.second) {
-      // Move the CertInfo into |cert_info_id_map_|.
-      CertificateManagerModel::CertInfo* cert_info = org_cert.get();
-      std::string id =
-          base::NumberToString(cert_info_id_map_.Add(std::move(org_cert)));
-
-      bool is_extractable = !cert_info->hardware_backed();
-#if BUILDFLAG(IS_CHROMEOS)
-      is_extractable = false;
-#endif
-
-      auto cert_dict =
-          base::Value::Dict()
-              .Set(kCertificatesHandlerKeyField, id)
-              .Set(kCertificatesHandlerNameField, cert_info->name())
-              .Set(kCertificatesHandlerCanBeDeletedField,
-                   CanDeleteCertificate(cert_info))
-              .Set(kCertificatesHandlerCanBeEditedField,
-                   CanEditCertificate(cert_info))
-              .Set(kCertificatesHandlerUntrustedField, cert_info->untrusted())
-              .Set(kCertificatesHandlerPolicyInstalledField,
-                   cert_info->source() ==
-                       CertificateManagerModel::CertInfo::Source::kPolicy)
-              .Set(kCertificatesHandlerWebTrustAnchorField,
-                   cert_info->web_trust_anchor())
-              // TODO(hshi): This should be determined by testing for PKCS #11
-              // CKA_EXTRACTABLE attribute. We may need to use the NSS function
-              // PK11_ReadRawAttribute to do that.
-              .Set(kCertificatesHandlerExtractableField, is_extractable);
-      // TODO(mattm): Other columns.
-      subnodes.Append(std::move(cert_dict));
-
-      contains_policy_certs |=
-          cert_info->source() ==
-          CertificateManagerModel::CertInfo::Source::kPolicy;
-    }
-    std::sort(subnodes.begin(), subnodes.end(), comparator);
-
-    // Populate first level (org name).
-    auto org_dict =
-        base::Value::Dict()
-            .Set(kCertificatesHandlerKeyField,
-                 OrgNameToId(org_grouping_map_entry.first))
-            .Set(kCertificatesHandlerNameField, org_grouping_map_entry.first)
-            .Set(kCertificatesHandlerContainsPolicyCertsField,
-                 contains_policy_certs)
-            .Set(kCertificatesHandlerSubnodesField, std::move(subnodes));
-    nodes.Append(std::move(org_dict));
-  }
-  std::sort(nodes.begin(), nodes.end(), comparator);
-
-  if (IsJavascriptAllowed()) {
-    FireWebUIListener("certificates-changed", base::Value(tab_name), nodes);
-  }
-}
-
-void CertificatesHandler::ResolveCallback(const base::ValueView response) {
-  DCHECK(!webui_callback_id_.empty());
-  ResolveJavascriptCallback(base::Value(webui_callback_id_), response);
-  webui_callback_id_.clear();
-}
-
-void CertificatesHandler::RejectCallback(const base::ValueView response) {
-  DCHECK(!webui_callback_id_.empty());
-  RejectJavascriptCallback(base::Value(webui_callback_id_), response);
-  webui_callback_id_.clear();
-}
-
-void CertificatesHandler::RejectCallbackWithError(const std::string& title,
-                                                  const std::string& error) {
-  RejectCallback(base::Value::Dict()
-                     .Set(kCertificatesHandlerErrorTitle, title)
-                     .Set(kCertificatesHandlerErrorDescription, error));
-}
-
-void CertificatesHandler::RejectCallbackWithImportError(
-    const std::string& title,
-    const net::NSSCertDatabase::ImportCertFailureList& not_imported) {
-  std::string error;
-  if (selected_cert_list_.size() == 1) {
-    error = l10n_util::GetStringUTF8(
-        IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_SINGLE_NOT_IMPORTED);
-  } else if (not_imported.size() == selected_cert_list_.size()) {
-    error = l10n_util::GetStringUTF8(
-        IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ALL_NOT_IMPORTED);
-  } else {
-    error = l10n_util::GetStringUTF8(
-        IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_SOME_NOT_IMPORTED);
-  }
-
-  base::Value::List cert_error_list;
-  for (const auto& failure : not_imported) {
-    cert_error_list.Append(
-        base::Value::Dict()
-            .Set(kCertificatesHandlerNameField,
-                 x509_certificate_model::GetSubjectDisplayName(
-                     failure.certificate.get()))
-            .Set(kCertificatesHandlerErrorField,
-                 NetErrorToString(failure.net_error)));
-  }
-
-  RejectCallback(base::Value::Dict()
-                     .Set(kCertificatesHandlerErrorTitle, title)
-                     .Set(kCertificatesHandlerErrorDescription, error)
-                     .Set(kCertificatesHandlerCertificateErrors,
-                          std::move(cert_error_list)));
-}
-
-gfx::NativeWindow CertificatesHandler::GetParentWindow() {
-  return web_ui()->GetWebContents()->GetTopLevelNativeWindow();
-}
-
-CertificateManagerModel::CertInfo*
-CertificatesHandler::GetCertInfoFromCallbackArgs(const base::Value::List& args,
-                                                 size_t arg_index) {
-  if (arg_index >= args.size()) {
-    return nullptr;
-  }
-  const auto& arg = args[arg_index];
-  if (!arg.is_string()) {
-    return nullptr;
-  }
-
-  int32_t cert_info_id = 0;
-  if (!base::StringToInt(arg.GetString(), &cert_info_id)) {
-    return nullptr;
-  }
-
-  return cert_info_id_map_.Lookup(cert_info_id);
-}
-
-bool CertificatesHandler::IsClientCertificateManagementAllowed(Slot slot) {
-#if BUILDFLAG(IS_CHROMEOS)
-  if (!IsClientCertificateManagementAllowedPolicy(slot)) {
-    return false;
-  }
-#endif  //  BUILDFLAG(IS_CHROMEOS)
-
-  return true;
-}
-
-bool CertificatesHandler::IsCACertificateManagementAllowed(
-    CertificateSource source) {
-#if BUILDFLAG(IS_CHROMEOS)
-  if (!IsCACertificateManagementAllowedPolicy(source)) {
-    return false;
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-  return true;
-}
-
-#if BUILDFLAG(IS_CHROMEOS)
-bool CertificatesHandler::IsClientCertificateManagementAllowedPolicy(
-    Slot slot) {
-  Profile* profile = Profile::FromWebUI(web_ui());
-
-  PrefService* prefs = profile->GetPrefs();
-  auto policy_value = static_cast<ClientCertificateManagementPermission>(
-      prefs->GetInteger(prefs::kClientCertificateManagementAllowed));
-
-  if (slot == Slot::kUser) {
-    return policy_value != ClientCertificateManagementPermission::kNone;
-  }
-  return policy_value == ClientCertificateManagementPermission::kAll;
-}
-
-bool CertificatesHandler::IsCACertificateManagementAllowedPolicy(
-    CertificateSource source) {
-  Profile* profile = Profile::FromWebUI(web_ui());
-
-  PrefService* prefs = profile->GetPrefs();
-  auto policy_value = static_cast<CACertificateManagementPermission>(
-      prefs->GetInteger(prefs::kCACertificateManagementAllowed));
-
-  switch (source) {
-    case CertificateSource::kBuiltIn:
-      return policy_value == CACertificateManagementPermission::kAll;
-    case CertificateSource::kImported:
-      return policy_value != CACertificateManagementPermission::kNone;
-  }
-}
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-bool CertificatesHandler::CanDeleteCertificate(
-    const CertificateManagerModel::CertInfo* cert_info) {
-  if (!cert_info->can_be_deleted() ||
-      cert_info->source() ==
-          CertificateManagerModel::CertInfo::Source::kPolicy) {
-    return false;
-  }
-
-  if (cert_info->type() == net::CertType::USER_CERT) {
-    return IsClientCertificateManagementAllowed(
-        cert_info->device_wide() ? Slot::kSystem : Slot::kUser);
-  }
-  if (cert_info->type() == net::CertType::CA_CERT) {
-    CertificateSource source = cert_info->can_be_deleted()
-                                   ? CertificateSource::kImported
-                                   : CertificateSource::kBuiltIn;
-    return IsCACertificateManagementAllowed(source);
-  }
-  return true;
-}
-
-bool CertificatesHandler::CanEditCertificate(
-    const CertificateManagerModel::CertInfo* cert_info) {
-  if ((cert_info->type() != net::CertType::CA_CERT) ||
-      (cert_info->source() ==
-       CertificateManagerModel::CertInfo::Source::kPolicy)) {
-    return false;
-  }
-
-  CertificateSource source = cert_info->can_be_deleted()
-                                 ? CertificateSource::kImported
-                                 : CertificateSource::kBuiltIn;
-  return IsCACertificateManagementAllowed(source);
-}
-
-#if BUILDFLAG(IS_CHROMEOS)
-void CertificatesHandler::RegisterProfilePrefs(
-    user_prefs::PrefRegistrySyncable* registry) {
+void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
   // Allow users to manage all client certificates by default. This can be
   // overridden by enterprise policy.
   registry->RegisterIntegerPref(
       prefs::kClientCertificateManagementAllowed,
       static_cast<int>(ClientCertificateManagementPermission::kAll));
 }
-#endif  // BUILDFLAG(IS_CHROMEOS)
 
 }  // namespace certificate_manager
diff --git a/chrome/browser/ui/webui/certificates_handler.h b/chrome/browser/ui/webui/certificates_handler.h
index 0bb35f0..8ae8d40 100644
--- a/chrome/browser/ui/webui/certificates_handler.h
+++ b/chrome/browser/ui/webui/certificates_handler.h
@@ -5,243 +5,16 @@
 #ifndef CHROME_BROWSER_UI_WEBUI_CERTIFICATES_HANDLER_H_
 #define CHROME_BROWSER_UI_WEBUI_CERTIFICATES_HANDLER_H_
 
-#include <memory>
-#include <string>
-
-#include "base/containers/id_map.h"
-#include "base/memory/weak_ptr.h"
-#include "base/task/cancelable_task_tracker.h"
 #include "build/build_config.h"
-#include "chrome/browser/certificate_manager_model.h"
 #include "chrome/browser/ui/webui/certificate_manager/certificate_manager_utils.h"
-#include "components/file_access/scoped_file_access.h"
-#include "content/public/browser/web_ui_message_handler.h"
-#include "net/cert/nss_cert_database.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/shell_dialogs/select_file_dialog.h"
 
 namespace user_prefs {
 class PrefRegistrySyncable;
 }
 
-enum class Slot { kUser, kSystem };
-enum class CertificateSource { kBuiltIn, kImported };
-
 namespace certificate_manager {
-
-class FileAccessProvider;
-
-class CertificatesHandler : public content::WebUIMessageHandler,
-                            public CertificateManagerModel::Observer,
-                            public ui::SelectFileDialog::Listener {
- public:
-  CertificatesHandler();
-
-  CertificatesHandler(const CertificatesHandler&) = delete;
-  CertificatesHandler& operator=(const CertificatesHandler&) = delete;
-
-  ~CertificatesHandler() override;
-
-  // content::WebUIMessageHandler.
-  void RegisterMessages() override;
-
-  // CertificateManagerModel::Observer implementation.
-  void CertificatesRefreshed() override;
-
-  // SelectFileDialog::Listener implementation.
-  void FileSelected(const ui::SelectedFileInfo& file, int index) override;
-  void FileSelectionCanceled() override;
-
-#if BUILDFLAG(IS_CHROMEOS)
   // Register profile preferences.
-  static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
- private:
-  enum PendingOperation {
-    EXPORT_PERSONAL_FILE,
-    IMPORT_PERSONAL_FILE,
-    IMPORT_SERVER_FILE,
-    IMPORT_CA_FILE,
-  };
-
-  // View certificate.
-  void HandleViewCertificate(const base::Value::List& args);
-
-  // Edit certificate authority trust values.  The sequence goes like:
-  //  1. user clicks edit button -> Edit dialog is shown ->
-  //  HandleGetCATrust -> Edit dialog is populated.
-  //  2. User checks/unchecks boxes, and clicks ok -> HandleEditCATrust ->
-  //  edit dialog is dismissed upon success.
-  void HandleGetCATrust(const base::Value::List& args);
-  void HandleEditCATrust(const base::Value::List& args);
-
-  // Cleanup state stored during import or export process.
-  void HandleCancelImportExportProcess(const base::Value::List& args);
-  void ImportExportCleanup();
-
-  // Export to PKCS #12 file.  The sequence goes like:
-  //  1. user click on export button -> HandleExportPersonal -> launches file
-  //  selector
-  //  2. user selects file -> ExportPersonalFileSelected -> launches password
-  //  dialog
-  //  3. user enters password -> HandleExportPersonalPasswordSelected ->
-  //  unlock slots
-  //  4. slots unlocked -> ExportPersonalSlotsUnlocked -> exports to memory
-  //  buffer -> starts async write operation
-  //  5. write finishes (or fails) -> ExportPersonalFileWritten
-  void HandleExportPersonal(const base::Value::List& args);
-  void ExportPersonalFileSelected(const base::FilePath& path);
-  void HandleExportPersonalPasswordSelected(const base::Value::List& args);
-  void ExportPersonalSlotsUnlocked();
-  void ExportPersonalFileWritten(const int* write_errno);
-
-  // Import from PKCS #12 or cert file.  The sequence goes like:
-  //  1. user click on import button -> HandleImportPersonal ->
-  //  launches file selector
-  //  2. user selects file -> ImportPersonalFileSelected -> starts async
-  //  read operation
-  //  3. read operation completes -> ImportPersonalFileRead ->
-  //    If file is PFX -> launches password dialog, goto step 4
-  //    Else -> import as certificate, goto step 6
-  //  4. user enters password -> HandleImportPersonalPasswordSelected ->
-  //  unlock slot
-  //  5. slot unlocked -> ImportPersonalSlotUnlocked attempts to
-  //  import with previously entered password
-  //  6a. if import succeeds -> ImportExportCleanup
-  //  6b. if import fails -> show error, ImportExportCleanup
-  //  TODO(mattm): allow retrying with different password
-  void HandleImportPersonal(const base::Value::List& args);
-  void ImportPersonalFileSelected(const base::FilePath& path,
-                                  file_access::ScopedFileAccess file_access);
-  void ImportPersonalFileRead(const int* read_errno, const std::string* data);
-  void HandleImportPersonalPasswordSelected(const base::Value::List& args);
-  void ImportPersonalSlotUnlocked();
-  void ImportPersonalResultReceived(int net_result);
-
-  // Import Server certificates from file.  Sequence goes like:
-  //  1. user clicks on import button -> HandleImportServer -> launches file
-  //  selector
-  //  2. user selects file -> ImportServerFileSelected -> starts async read
-  //  3. read completes -> ImportServerFileRead -> parse certs -> attempt import
-  //  4a. if import succeeds -> ImportExportCleanup
-  //  4b. if import fails -> show error, ImportExportCleanup
-  void HandleImportServer(const base::Value::List& args);
-  void ImportServerFileSelected(const base::FilePath& path,
-                                file_access::ScopedFileAccess file_access);
-  void ImportServerFileRead(const int* read_errno, const std::string* data);
-
-  // Import Certificate Authorities from file.  Sequence goes like:
-  //  1. user clicks on import button -> HandleImportCA -> launches file
-  //  selector
-  //  2. user selects file -> ImportCAFileSelected -> starts async read
-  //  3. read completes -> ImportCAFileRead -> parse certs -> Certificate trust
-  //  level dialog is shown.
-  //  4. user clicks ok -> HandleImportCATrustSelected -> attempt import
-  //  5a. if import succeeds -> ImportExportCleanup
-  //  5b. if import fails -> show error, ImportExportCleanup
-  void HandleImportCA(const base::Value::List& args);
-  void ImportCAFileSelected(const base::FilePath& path,
-                            file_access::ScopedFileAccess file_access);
-  void ImportCAFileRead(const int* read_errno, const std::string* data);
-  void HandleImportCATrustSelected(const base::Value::List& args);
-
-  // Export a certificate.
-  void HandleExportCertificate(const base::Value::List& args);
-
-  // Delete certificate and private key (if any).
-  void HandleDeleteCertificate(const base::Value::List& args);
-  void OnCertificateDeleted(bool result);
-
-  // Model initialization methods.
-  void OnCertificateManagerModelCreated(
-      std::unique_ptr<CertificateManagerModel> model);
-  void CertificateManagerModelReady();
-
-  // Populate the trees in all the tabs.
-  void HandleRefreshCertificates(const base::Value::List& args);
-
-  // Populate the given tab's tree.
-  void PopulateTree(const std::string& tab_name, net::CertType type);
-
-  void ResolveCallback(const base::ValueView response);
-  void RejectCallback(const base::ValueView response);
-
-  // Reject the pending JS callback with a generic error.
-  void RejectCallbackWithError(const std::string& title,
-                               const std::string& error);
-
-  // Reject the pending JS callback with a certificate import error.
-  void RejectCallbackWithImportError(
-      const std::string& title,
-      const net::NSSCertDatabase::ImportCertFailureList& not_imported);
-
-  // Assigns a new |webui_callback_id_|. Returns false if a previous request
-  // is still in-flight, in which case the new request should be rejected and
-  // ignored.
-  [[nodiscard]] bool AssignWebUICallbackId(const base::Value::List& args);
-
-  gfx::NativeWindow GetParentWindow();
-
-  // If |args| is a list, parses the list element at |arg_index| as an id for
-  // |cert_info_id_map_| and looks up the corresponding CertInfo. If there is
-  // an error parsing the list, returns nullptr.
-  CertificateManagerModel::CertInfo* GetCertInfoFromCallbackArgs(
-      const base::Value::List& args,
-      size_t arg_index);
-
-  // Returns true if the user may manage client certificates on |slot|.
-  bool IsClientCertificateManagementAllowed(Slot slot);
-
-  // Returns true if the user may manage CA certificates.
-  bool IsCACertificateManagementAllowed(CertificateSource source);
-
-#if BUILDFLAG(IS_CHROMEOS)
-  // Returns true if the user may manage certificates on |slot| according
-  // to ClientCertificateManagementAllowed policy.
-  bool IsClientCertificateManagementAllowedPolicy(Slot slot);
-
-  // Returns true if the user may manage certificates according
-  // to CACertificateManagementAllowed policy.
-  bool IsCACertificateManagementAllowedPolicy(CertificateSource source);
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-  // Returns true if the certificate represented by |cert_info| can be deleted.
-  bool CanDeleteCertificate(const CertificateManagerModel::CertInfo* cert_info);
-
-  // Returns true if the certificate represented by |cert_info| can be edited.
-  bool CanEditCertificate(const CertificateManagerModel::CertInfo* cert_info);
-
-  // The Certificates Manager model
-  bool requested_certificate_manager_model_;
-  std::unique_ptr<CertificateManagerModel> certificate_manager_model_;
-
-  // For multi-step import or export processes, we need to store the path,
-  // password, etc the user chose while we wait for them to enter a password,
-  // wait for file to be read, etc.
-  base::FilePath file_path_;
-  std::u16string password_;
-  // The WebUI callback ID of the last in-flight async request. There is always
-  // only one in-flight such request.
-  std::string webui_callback_id_;
-  bool use_hardware_backed_;
-  std::string file_data_;
-  net::ScopedCERTCertificateList selected_cert_list_;
-  scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
-  std::optional<PendingOperation> pending_operation_;
-  crypto::ScopedPK11Slot slot_;
-
-  // Used in reading and writing certificate files.
-  base::CancelableTaskTracker tracker_;
-  scoped_refptr<FileAccessProvider> file_access_provider_;
-
-  base::IDMap<std::unique_ptr<CertificateManagerModel::CertInfo>>
-      cert_info_id_map_;
-
-  base::WeakPtrFactory<CertificatesHandler> weak_ptr_factory_{this};
-  friend class ::CertificateHandlerTest;
-};
-
+void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
 }  // namespace certificate_manager
 
 #endif  // CHROME_BROWSER_UI_WEBUI_CERTIFICATES_HANDLER_H_
diff --git a/chrome/browser/ui/webui/certificates_handler_unittest.cc b/chrome/browser/ui/webui/certificates_handler_unittest.cc
deleted file mode 100644
index 51a61e8..0000000
--- a/chrome/browser/ui/webui/certificates_handler_unittest.cc
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2019 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/certificates_handler.h"
-
-#include "base/memory/raw_ptr.h"
-#include "base/test/gtest_tags.h"
-#include "build/build_config.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "chrome/test/base/testing_profile.h"
-#include "components/sync_preferences/testing_pref_service_syncable.h"
-#include "content/public/test/test_web_ui.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-class CertificateHandlerTest : public ChromeRenderViewHostTestHarness {
- public:
-  void SetUp() override {
-    base::AddTagToTestResult("feature_id",
-                             "screenplay-7c74e36b-7675-4fa7-91ca-24577bb37203");
-    ChromeRenderViewHostTestHarness::SetUp();
-
-    web_ui_.set_web_contents(web_contents());
-    cert_handler_.set_web_ui(&web_ui_);
-  }
-
-#if BUILDFLAG(IS_CHROMEOS)
-  bool IsCACertificateManagementAllowedPolicy(CertificateSource source) {
-    return cert_handler_.IsCACertificateManagementAllowedPolicy(source);
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-  bool CanDeleteCertificate(
-      const CertificateManagerModel::CertInfo* cert_info) {
-    return cert_handler_.CanDeleteCertificate(cert_info);
-  }
-
-  bool CanEditCertificate(const CertificateManagerModel::CertInfo* cert_info) {
-    return cert_handler_.CanEditCertificate(cert_info);
-  }
-
-  sync_preferences::TestingPrefServiceSyncable* pref_service() {
-    return profile()->GetTestingPrefService();
-  }
-
- protected:
-  content::TestWebUI web_ui_;
-  certificate_manager::CertificatesHandler cert_handler_;
-};
-
-#if BUILDFLAG(IS_CHROMEOS)
-TEST_F(CertificateHandlerTest, IsCACertificateManagementAllowedPolicyTest) {
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kAll));
-
-    EXPECT_TRUE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kImported));
-    EXPECT_TRUE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kBuiltIn));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kUserOnly));
-
-    EXPECT_TRUE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kImported));
-    EXPECT_FALSE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kBuiltIn));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kNone));
-
-    EXPECT_FALSE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kImported));
-    EXPECT_FALSE(
-        IsCACertificateManagementAllowedPolicy(CertificateSource::kBuiltIn));
-  }
-}
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
-TEST_F(CertificateHandlerTest, CanDeleteCertificateCommonTest) {
-  CertificateManagerModel::CertInfo default_cert_info(
-      {} /* cert */, net::CertType::USER_CERT, {} /* cert_name */,
-      false /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kPolicy,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-
-  {
-    auto cert_info =
-        CertificateManagerModel::CertInfo::Clone(&default_cert_info);
-    cert_info->type_ = net::CertType::USER_CERT;
-    cert_info->can_be_deleted_ = false;
-    cert_info->source_ = CertificateManagerModel::CertInfo::Source::kExtension;
-
-    // Deletion of |!can_be_deleted_| certificates is not allowed.
-    EXPECT_FALSE(CanDeleteCertificate(cert_info.get()));
-  }
-
-  {
-    auto cert_info =
-        CertificateManagerModel::CertInfo::Clone(&default_cert_info);
-    cert_info->type_ = net::CertType::USER_CERT;
-    cert_info->can_be_deleted_ = true;
-    cert_info->source_ = CertificateManagerModel::CertInfo::Source::kPolicy;
-
-    // Deletion of policy certificates is not allowed.
-    EXPECT_FALSE(CanDeleteCertificate(cert_info.get()));
-  }
-}
-
-TEST_F(CertificateHandlerTest, CanDeleteUserCertificateTest) {
-  CertificateManagerModel::CertInfo cert_info(
-      {} /* cert */, net::CertType::USER_CERT, {} /* cert_name */,
-      true /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kExtension,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-  {
-    cert_info.device_wide_ = false;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-  }
-
-#if BUILDFLAG(IS_CHROMEOS)
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kAll));
-
-    cert_info.device_wide_ = false;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kUserOnly));
-
-    cert_info.device_wide_ = false;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kNone));
-
-    cert_info.device_wide_ = false;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-}
-
-TEST_F(CertificateHandlerTest, CanDeleteCACertificateTest) {
-  CertificateManagerModel::CertInfo cert_info(
-      {} /* cert */, net::CertType::CA_CERT, {} /* cert_name */,
-      true /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kExtension,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-  {
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-  }
-
-#if BUILDFLAG(IS_CHROMEOS)
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kAll));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kUserOnly));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanDeleteCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kNone));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-    cert_info.can_be_deleted_ = true;
-    EXPECT_FALSE(CanDeleteCertificate(&cert_info));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-}
-
-TEST_F(CertificateHandlerTest, CanEditCertificateCommonTest) {
-  CertificateManagerModel::CertInfo cert_info(
-      {} /* cert */, net::CertType::USER_CERT, {} /* cert_name */,
-      true /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kExtension,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-
-  cert_info.source_ = CertificateManagerModel::CertInfo::Source::kExtension;
-  cert_info.type_ = net::CertType::USER_CERT;
-  EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-  cert_info.source_ = CertificateManagerModel::CertInfo::Source::kExtension;
-  cert_info.type_ = net::CertType::SERVER_CERT;
-  EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-  cert_info.source_ = CertificateManagerModel::CertInfo::Source::kExtension;
-  cert_info.type_ = net::CertType::OTHER_CERT;
-  EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-  cert_info.source_ = CertificateManagerModel::CertInfo::Source::kPolicy;
-  cert_info.type_ = net::CertType::CA_CERT;
-  EXPECT_FALSE(CanEditCertificate(&cert_info));
-}
-
-// Edit of user certificates is not allowed in any case.
-TEST_F(CertificateHandlerTest, CanEditUserCertificateTest) {
-  CertificateManagerModel::CertInfo cert_info(
-      {} /* cert */, net::CertType::USER_CERT, {} /* cert_name */,
-      true /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kExtension,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-  {
-    cert_info.device_wide_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-  }
-
-#if BUILDFLAG(IS_CHROMEOS)
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kAll));
-
-    cert_info.device_wide_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kUserOnly));
-
-    cert_info.device_wide_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kClientCertificateManagementAllowed,
-        static_cast<int>(ClientCertificateManagementPermission::kNone));
-
-    cert_info.device_wide_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.device_wide_ = true;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-}
-
-TEST_F(CertificateHandlerTest, CanEditCACertificateTest) {
-  CertificateManagerModel::CertInfo cert_info(
-      {} /* cert */, net::CertType::CA_CERT, {} /* cert_name */,
-      false /* can_be_deleted */, false /* untrusted */,
-      CertificateManagerModel::CertInfo::Source::kExtension,
-      true /* web_trust_anchor */, false /* hardware_backed */,
-      false /* device_wide */);
-  {
-    cert_info.can_be_deleted_ = false;
-    EXPECT_TRUE(CanEditCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanEditCertificate(&cert_info));
-  }
-
-#if BUILDFLAG(IS_CHROMEOS)
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kAll));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_TRUE(CanEditCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanEditCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kUserOnly));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_TRUE(CanEditCertificate(&cert_info));
-  }
-
-  {
-    pref_service()->SetInteger(
-        prefs::kCACertificateManagementAllowed,
-        static_cast<int>(CACertificateManagementPermission::kNone));
-
-    cert_info.can_be_deleted_ = false;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-
-    cert_info.can_be_deleted_ = true;
-    EXPECT_FALSE(CanEditCertificate(&cert_info));
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-}
diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
index 1bdef887..f740a18 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
@@ -127,6 +127,10 @@
 #include "chrome/browser/ui/webui/extensions/extensions_ui.h"
 #endif  // !BUILDFLAG(ENABLE_EXTENSIONS_CORE)
 
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h"
+#endif  // ENABLE_EXTENSIONS
+
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
 #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
@@ -345,6 +349,11 @@
   map.AddWebUIConfig(std::make_unique<extensions::ExtensionsUIConfig>());
 #endif  // !BUILDFLAG(ENABLE_EXTENSIONS_CORE)
 
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+  map.AddWebUIConfig(
+      std::make_unique<extensions::ZeroStatePromoControllerConfig>());
+#endif  // !BUILDFLAG(ENABLE_EXTENSIONS)
+
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
   map.AddWebUIConfig(std::make_unique<printing::PrintPreviewUIConfig>());
 #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_test_base.cc b/chrome/browser/ui/webui/extensions/extension_settings_test_base.cc
index 380bd5b..ac6c7c3 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_test_base.cc
+++ b/chrome/browser/ui/webui/extensions/extension_settings_test_base.cc
@@ -11,11 +11,14 @@
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
 #include "chrome/browser/extensions/unpacked_installer.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/pref_names.h"
 #include "extensions/browser/extension_dialog_auto_confirm.h"
 
+#if !BUILDFLAG(IS_ANDROID)
+#include "chrome/browser/ui/browser.h"
+#endif  // !BUILDFLAG(IS_ANDROID)
+
 using extensions::Extension;
 
 ExtensionSettingsTestBase::ExtensionSettingsTestBase()
@@ -71,8 +74,8 @@
 }
 
 void ExtensionSettingsTestBase::SetDevModeEnabled(bool enabled) {
-  browser()->profile()->GetPrefs()->SetBoolean(
-      prefs::kExtensionsUIDeveloperMode, enabled);
+  GetProfile()->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode,
+                                       enabled);
 }
 
 void ExtensionSettingsTestBase::SetSilenceDeprecatedManifestVersionWarnings(
@@ -83,7 +86,7 @@
 
 const Extension* ExtensionSettingsTestBase::InstallExtension(
     const base::FilePath& path) {
-  extensions::ChromeTestExtensionLoader loader(browser()->profile());
+  extensions::ChromeTestExtensionLoader loader(GetProfile());
   loader.set_ignore_manifest_warnings(true);
   return loader.LoadExtension(path).get();
 }
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_test_base.h b/chrome/browser/ui/webui/extensions/extension_settings_test_base.h
index 8b3e158..6465b4fc 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_test_base.h
+++ b/chrome/browser/ui/webui/extensions/extension_settings_test_base.h
@@ -9,10 +9,13 @@
 
 #include "base/files/file_path.h"
 #include "chrome/browser/extensions/install_verifier.h"
-#include "chrome/browser/extensions/scoped_test_mv2_enabler.h"
 #include "chrome/test/base/web_ui_mocha_browser_test.h"
 #include "extensions/browser/scoped_ignore_content_verifier_for_test.h"
 
+#if !BUILDFLAG(IS_ANDROID)
+#include "chrome/browser/extensions/scoped_test_mv2_enabler.h"
+#endif  // !BUILDFLAG(IS_ANDROID)
+
 #if BUILDFLAG(IS_WIN)
 #include "base/base_paths_win.h"
 #include "base/test/scoped_path_override.h"
@@ -84,8 +87,10 @@
   std::unique_ptr<extensions::ScopedTestDialogAutoConfirm>
       uninstall_auto_confirm_;
 
+#if !BUILDFLAG(IS_ANDROID)
   // TODO(https://crbug.com/40804030): Remove this when updated to use MV3.
   extensions::ScopedTestMV2Enabler mv2_enabler_;
+#endif  // BUILDFLAG(IS_ANDROID)
 };
 
 #endif  // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_EXTENSION_SETTINGS_TEST_BASE_H_
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/BUILD.gn b/chrome/browser/ui/webui/extensions_zero_state_promo/BUILD.gn
new file mode 100644
index 0000000..8421a7ac
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/BUILD.gn
@@ -0,0 +1,12 @@
+# Copyright 2025 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import("//mojo/public/tools/bindings/mojom.gni")
+mojom("mojo_bindings") {
+  sources = [ "zero_state_promo.mojom" ]
+  webui_module_path = "/"
+  public_deps = [
+    "//mojo/public/mojom/base",
+    "//ui/base/mojom",
+  ]
+}
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/DIR_METADATA b/chrome/browser/ui/webui/extensions_zero_state_promo/DIR_METADATA
new file mode 100644
index 0000000..3a31847
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail: {
+  component: "Platform>Extensions"
+}
+team_email: "webstore-consumer@google.com"
+buganizer_public: {
+  component_id: 1456110
+}
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/OWNERS b/chrome/browser/ui/webui/extensions_zero_state_promo/OWNERS
new file mode 100644
index 0000000..062f367
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/OWNERS
@@ -0,0 +1,7 @@
+per-file *.mojom=set noparent
+per-file *.mojom=file://ipc/SECURITY_OWNERS
+
+uwyiming@google.com
+phu@google.com
+dfried@chromium.org
+webstore-consumer@google.com
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/extensions_zero_state_promo_interactive_uitest.cc b/chrome/browser/ui/webui/extensions_zero_state_promo/extensions_zero_state_promo_interactive_uitest.cc
new file mode 100644
index 0000000..95b8aaa
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/extensions_zero_state_promo_interactive_uitest.cc
@@ -0,0 +1,248 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/test/metrics/histogram_tester.h"
+#include "chrome/browser/ui/views/extensions/extensions_toolbar_container_view_controller.h"
+#include "chrome/browser/ui/views/user_education/custom_webui_help_bubble.h"
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom.h"
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/test/user_education/interactive_feature_promo_test.h"
+#include "components/user_education/common/user_education_data.h"
+#include "components/user_education/views/help_bubble_view.h"
+#include "content/public/test/browser_test.h"
+#include "extensions/common/extension_urls.h"
+#include "ui/base/interaction/polling_state_observer.h"
+
+namespace {
+DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kFirstTabContents);
+DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kSecondTabContents);
+DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kZeroStatePromoWebUiIphId);
+DEFINE_LOCAL_STATE_IDENTIFIER_VALUE(ui::test::PollingStateObserver<int>,
+                                    kTabCountState);
+}  // namespace
+
+class ExtensionsZeroStatePromoTestBase : public InteractiveFeaturePromoTest {
+ public:
+  ExtensionsZeroStatePromoTestBase(
+      feature_engagement::IPHExtensionsZeroStatePromoVariant iphVariant)
+      : InteractiveFeaturePromoTest(UseDefaultTrackerAllowingPromosWithParams(
+            {{feature_engagement::kIPHExtensionsZeroStatePromoFeature,
+              {{feature_engagement::kIPHExtensionsZeroStatePromoVariantParam
+                    .name,
+                feature_engagement::kIPHExtensionsZeroStatePromoVariantParam
+                    .GetName(iphVariant)}}}})) {}
+
+  void PreRunTestOnMainThread() override {
+    // Block zero state promo IPH during browser launch, to prevent a race
+    // condition where the IPH steals focus from the browser, and causes the
+    // PreRunTestOnMainThread method to time out waiting for the browser to
+    // come to focus.
+    auto auto_reset = ExtensionsToolbarContainerViewController::
+        BlockZeroStatePromoForTesting();
+    InProcessBrowserTest::PreRunTestOnMainThread();
+  }
+
+  auto WaitForTabCount(int expected_count) {
+    return Steps(
+        PollState(kTabCountState,
+                  [this]() { return browser()->tab_strip_model()->count(); }),
+        WaitForState(kTabCountState, expected_count),
+        StopObservingState(kTabCountState));
+  }
+
+  auto CheckZeroStatePromoClosedReason(
+      user_education::FeaturePromoClosedReason closeReason) {
+    return Do([this, closeReason]() {
+      histogram_tester_.ExpectBucketCount(
+          "UserEducation.MessageAction.IPH_ExtensionsZeroStatePromo",
+          closeReason, 1);
+    });
+  }
+
+  auto CheckZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked link,
+      base::HistogramBase::Count32 expected_count) {
+    return Do([this, link, expected_count]() {
+      histogram_tester_.ExpectBucketCount(
+          "Extension.ZeroStatePromo.IphActionChromeWebStoreLink", link,
+          expected_count);
+    });
+  }
+
+ private:
+  base::HistogramTester histogram_tester_;
+};
+
+class ExtensionsZeroStateCustomActionIphTest
+    : public ExtensionsZeroStatePromoTestBase {
+ public:
+  ExtensionsZeroStateCustomActionIphTest()
+      : ExtensionsZeroStatePromoTestBase(
+            feature_engagement::IPHExtensionsZeroStatePromoVariant::
+                kCustomActionIph) {}
+};
+
+// Test showing the zero state promo custom action IPH to users with no
+// extensions installed. Clicking on the custom action opens a page to the
+// Chrome Web Store.
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomActionIphTest,
+                       ShowingZeroStatePromoCustomActionIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      InAnyContext(WaitForPromo(
+          feature_engagement::kIPHExtensionsZeroStatePromoFeature)),
+      PressDefaultPromoButton(), WaitForTabCount(2),
+      InstrumentTab(kSecondTabContents, 1),
+      WaitForWebContentsReady(kSecondTabContents,
+                              extension_urls::GetWebstoreLaunchURL()));
+}
+
+class ExtensionsZeroStateCustomUiChipIphTest
+    : public ExtensionsZeroStatePromoTestBase {
+ public:
+  ExtensionsZeroStateCustomUiChipIphTest()
+      : ExtensionsZeroStatePromoTestBase(
+            feature_engagement::IPHExtensionsZeroStatePromoVariant::
+                kCustomUiChipIph) {}
+
+  const DeepQuery kDismissButton{"extensions-zero-state-promo-app",
+                                 "#dismissButton"};
+  const DeepQuery kCouponButton{"extensions-zero-state-promo-app",
+                                "#couponsButton"};
+  const DeepQuery kWritingButton{"extensions-zero-state-promo-app",
+                                 "#writingButton"};
+  const DeepQuery kProductivityButton{"extensions-zero-state-promo-app",
+                                      "#productivityButton"};
+  const DeepQuery kAiButton{"extensions-zero-state-promo-app", "#aiButton"};
+};
+
+// Test showing the zero state promo custom ui IPH (chips variant) with no
+// extensions installed. Clicking on the coupon chip button should open a
+// page to the Chrome Web Store.
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomUiChipIphTest,
+                       ClickCouponChipOnZeroStatePromoIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents, 0),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      WaitForShow(CustomWebUIHelpBubble::kHelpBubbleIdForTesting),
+      InstrumentNonTabWebView(kZeroStatePromoWebUiIphId,
+                              CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForWebContentsReady(
+          kZeroStatePromoWebUiIphId,
+          GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kCoupon, 0),
+      ClickElement(kZeroStatePromoWebUiIphId, kCouponButton,
+                   ExecuteJsMode::kFireAndForget),
+      WaitForHide(CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForTabCount(2), InstrumentTab(kSecondTabContents, 1),
+      WaitForWebContentsReady(kSecondTabContents,
+                              GURL("https://chromewebstore.google.com/category/"
+                                   "extensions/lifestyle/shopping")),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kCoupon, 1));
+}
+
+// Test showing the zero state promo custom ui IPH (chips variant) with no
+// extensions installed. Clicking on the writing chip button should open a
+// page to the Chrome Web Store.
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomUiChipIphTest,
+                       ClickWritingChipOnZeroStatePromoIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents, 0),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      WaitForShow(CustomWebUIHelpBubble::kHelpBubbleIdForTesting),
+      InstrumentNonTabWebView(kZeroStatePromoWebUiIphId,
+                              CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForWebContentsReady(
+          kZeroStatePromoWebUiIphId,
+          GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kWriting, 0),
+      ClickElement(kZeroStatePromoWebUiIphId, kWritingButton,
+                   ExecuteJsMode::kFireAndForget),
+      WaitForHide(CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForTabCount(2), InstrumentTab(kSecondTabContents, 1),
+      WaitForWebContentsReady(kSecondTabContents,
+                              GURL("https://chromewebstore.google.com/"
+                                   "collection/writing_essentials")),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kWriting, 1));
+}
+
+// Test showing the zero state promo custom ui IPH (chips variant) with no
+// extensions installed. Clicking on the productivity chip button should open a
+// page to the Chrome Web Store.
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomUiChipIphTest,
+                       ClickProductivityChipOnZeroStatePromoIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents, 0),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      WaitForShow(CustomWebUIHelpBubble::kHelpBubbleIdForTesting),
+      InstrumentNonTabWebView(kZeroStatePromoWebUiIphId,
+                              CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForWebContentsReady(
+          kZeroStatePromoWebUiIphId,
+          GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kProductivity, 0),
+      ClickElement(kZeroStatePromoWebUiIphId, kProductivityButton,
+                   ExecuteJsMode::kFireAndForget),
+      WaitForHide(CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForTabCount(2), InstrumentTab(kSecondTabContents, 1),
+      WaitForWebContentsReady(kSecondTabContents,
+                              GURL("https://chromewebstore.google.com/category/"
+                                   "extensions/productivity/workflow")),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kProductivity, 1));
+}
+
+// Test showing the zero state promo custom ui IPH (chips variant) with no
+// extensions installed. Clicking on the ai chip button should open a
+// page to the Chrome Web Store.
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomUiChipIphTest,
+                       ClickAiChipOnZeroStatePromoIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents, 0),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      WaitForShow(CustomWebUIHelpBubble::kHelpBubbleIdForTesting),
+      InstrumentNonTabWebView(kZeroStatePromoWebUiIphId,
+                              CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForWebContentsReady(
+          kZeroStatePromoWebUiIphId,
+          GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kAi, 0),
+      ClickElement(kZeroStatePromoWebUiIphId, kAiButton,
+                   ExecuteJsMode::kFireAndForget),
+      WaitForHide(CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForTabCount(2), InstrumentTab(kSecondTabContents, 1),
+      WaitForWebContentsReady(
+          kSecondTabContents,
+          GURL("https://chromewebstore.google.com/collection/ai_productivity")),
+      CheckZeroStatePromoLinkClickCount(
+          zero_state_promo::mojom::WebStoreLinkClicked::kAi, 1));
+}
+
+IN_PROC_BROWSER_TEST_F(ExtensionsZeroStateCustomUiChipIphTest,
+                       DismissPromoIph) {
+  RunTestSequence(
+      InstrumentTab(kFirstTabContents, 0),
+      NavigateWebContents(kFirstTabContents, GURL(chrome ::kChromeUIAboutURL)),
+      WaitForShow(CustomWebUIHelpBubble::kHelpBubbleIdForTesting),
+      InstrumentNonTabWebView(kZeroStatePromoWebUiIphId,
+                              CustomWebUIHelpBubble::kWebViewIdForTesting),
+      WaitForWebContentsReady(
+          kZeroStatePromoWebUiIphId,
+          GURL(chrome::kChromeUIExtensionsZeroStatePromoURL)),
+      ClickElement(kZeroStatePromoWebUiIphId, kDismissButton,
+                   ExecuteJsMode::kFireAndForget),
+      WaitForHide(CustomWebUIHelpBubble::kWebViewIdForTesting),
+      CheckResult(
+          [this] { return browser()->tab_strip_model()->GetTabCount(); }, 1,
+          "CheckTabCount"),
+      CheckZeroStatePromoClosedReason(
+          user_education::FeaturePromoClosedReason::kDismiss));
+}
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom
new file mode 100644
index 0000000..466fb46d
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom
@@ -0,0 +1,48 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module zero_state_promo.mojom;
+
+// Enum depicting the webstore link the user clicked on the promo. Used for
+// UMA reporting.
+//
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+//
+// LINT.IfChange(WebStoreLinkClicked)
+enum WebStoreLinkClicked {
+  // The 'Discover Extensions' link.
+  kDiscoverExtension = 0,
+  // The 'Find Coupons' link.
+  kCoupon = 1,
+  // The 'Write better' link.
+  kWriting = 2,
+  // The 'Boost productivity' link.
+  kProductivity = 3,
+  // The 'Enhance with AI' link.
+  kAi = 4,
+};
+// LINT.ThenChange(//tools/metrics/histograms/enums.xml:WebStoreLinkClicked)
+
+// URL for each WebStoreLinkClicked.
+const string kDiscoverExtensionWebStoreUrl = "https://chromewebstore.google.com/";
+const string kCouponWebStoreUrl = "https://chromewebstore.google.com/category/extensions/lifestyle/shopping";
+const string kWritingWebStoreUrl = "https://chromewebstore.google.com/collection/writing_essentials";
+const string kProductivityWebStoreUrl = "https://chromewebstore.google.com/category/extensions/productivity/workflow";
+const string kAiWebStoreUrl = "https://chromewebstore.google.com/collection/ai_productivity";
+
+// Used by the WebUI page to bootstrap bidirectional communication.
+interface PageHandlerFactory {
+  // WebUI calls this method when the page is initialized.
+  CreatePageHandler(pending_receiver<PageHandler> handler);
+};
+
+// Browser-side handler for requests from the WebUI page.
+interface PageHandler {
+  // Launch a new tab to the specified Chrome Web Store link.
+  //
+  // TODO(crbug.com/418027382) Remove this method and invoke 'window.open' directly
+  // in script after TopChrome WebUI bubble supports 'window.open'.
+  LaunchWebStoreLink(WebStoreLinkClicked link);
+};
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.cc b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.cc
new file mode 100644
index 0000000..59432a0c
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.cc
@@ -0,0 +1,54 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h"
+
+#include "base/memory/ptr_util.h"
+#include "base/memory/raw_ptr.h"
+#include "base/metrics/histogram_functions.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_navigator.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "components/url_formatter/url_formatter.h"
+#include "mojo/public/cpp/bindings/message.h"
+#include "ui/base/mojom/window_open_disposition.mojom.h"
+#include "ui/base/window_open_disposition.h"
+#include "url/gurl.h"
+
+ZeroStatePromoPageHandler::ZeroStatePromoPageHandler(
+    Profile* profile,
+    mojo::PendingReceiver<zero_state_promo::mojom::PageHandler> receiver)
+    : receiver_(this, std::move(receiver)), profile_(profile) {}
+
+ZeroStatePromoPageHandler::~ZeroStatePromoPageHandler() {}
+
+void ZeroStatePromoPageHandler::LaunchWebStoreLink(
+    zero_state_promo::mojom::WebStoreLinkClicked link) {
+  GURL url;
+  switch (link) {
+    case zero_state_promo::mojom::WebStoreLinkClicked::kDiscoverExtension:
+      url = GURL(zero_state_promo::mojom::kDiscoverExtensionWebStoreUrl);
+      break;
+    case zero_state_promo::mojom::WebStoreLinkClicked::kCoupon:
+      url = GURL(zero_state_promo::mojom::kCouponWebStoreUrl);
+      break;
+    case zero_state_promo::mojom::WebStoreLinkClicked::kWriting:
+      url = GURL(zero_state_promo::mojom::kWritingWebStoreUrl);
+      break;
+    case zero_state_promo::mojom::WebStoreLinkClicked::kProductivity:
+      url = GURL(zero_state_promo::mojom::kProductivityWebStoreUrl);
+      break;
+    case zero_state_promo::mojom::WebStoreLinkClicked::kAi:
+      url = GURL(zero_state_promo::mojom::kAiWebStoreUrl);
+      break;
+  }
+
+  NavigateParams params(profile_, url, ::ui::PAGE_TRANSITION_AUTO_BOOKMARK);
+  params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
+  Navigate(&params);
+  base::UmaHistogramEnumeration(
+      "Extension.ZeroStatePromo.IphActionChromeWebStoreLink", link);
+}
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h
new file mode 100644
index 0000000..60b5484
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h
@@ -0,0 +1,33 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_PAGE_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_PAGE_HANDLER_H_
+
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
+
+class ZeroStatePromoPageHandler : public zero_state_promo::mojom::PageHandler {
+ public:
+  explicit ZeroStatePromoPageHandler(
+      Profile* profile,
+      mojo::PendingReceiver<zero_state_promo::mojom::PageHandler> receiver);
+
+  ZeroStatePromoPageHandler(const ZeroStatePromoPageHandler&) = delete;
+  ZeroStatePromoPageHandler& operator=(const ZeroStatePromoPageHandler&) =
+      delete;
+
+  ~ZeroStatePromoPageHandler() override;
+
+  void LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked link) override;
+
+ private:
+  mojo::Receiver<zero_state_promo::mojom::PageHandler> receiver_;
+  const raw_ptr<Profile> profile_;
+};
+
+#endif  // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_PAGE_HANDLER_H_
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler_unittest.cc b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler_unittest.cc
new file mode 100644
index 0000000..8929b7a
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler_unittest.cc
@@ -0,0 +1,112 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h"
+
+#include "base/test/metrics/histogram_tester.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
+
+namespace extensions {
+
+class ZeroStatePromoPageHandlerTest : public BrowserWithTestWindowTest {
+ public:
+  ZeroStatePromoPageHandlerTest() {}
+
+  void SetUp() override {
+    BrowserWithTestWindowTest::SetUp();
+    handler_ = std::make_unique<ZeroStatePromoPageHandler>(
+        mojo::PendingReceiver<zero_state_promo::mojom::PageHandler>());
+    histogram_tester_ = std::make_unique<base::HistogramTester>();
+
+    // Start the test with 1 active tab.
+    AddTab(browser(), GURL("about:blank"));
+  }
+
+  void TearDown() override { BrowserWithTestWindowTest::TearDown(); }
+
+  void ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked link,
+      base::HistogramBase::Count32 expected_count) {
+    histogram_tester_->ExpectBucketCount(
+        "Extension.ZeroStatePromo.IphActionChromeWebStoreLink", link,
+        expected_count);
+  }
+
+  ZeroStatePromoPageHandler& handler() { return *handler_; }
+
+ protected:
+  std::unique_ptr<ZeroStatePromoPageHandler> handler_;
+  std::unique_ptr<base::HistogramTester> histogram_tester_;
+};
+
+TEST_F(ZeroStatePromoPageHandlerTest, LaunchDiscoverWebStoreLink) {
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kDiscoverExtension, 0);
+
+  handler().LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked::kDiscoverExtension);
+
+  ASSERT_EQ(2, browser()->tab_strip_model()->count());
+  ASSERT_EQ(zero_state_promo::mojom::kDiscoverExtensionWebStoreUrl,
+            browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kDiscoverExtension, 1);
+}
+
+TEST_F(ZeroStatePromoPageHandlerTest, LaunchCouponLink) {
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kCoupon, 0);
+
+  handler().LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked::kCoupon);
+
+  ASSERT_EQ(2, browser()->tab_strip_model()->count());
+  ASSERT_EQ(zero_state_promo::mojom::kCouponWebStoreUrl,
+            browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kCoupon, 1);
+}
+
+TEST_F(ZeroStatePromoPageHandlerTest, LaunchWritingLink) {
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kWriting, 0);
+
+  handler().LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked::kWriting);
+
+  ASSERT_EQ(2, browser()->tab_strip_model()->count());
+  ASSERT_EQ(zero_state_promo::mojom::kWritingWebStoreUrl,
+            browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kWriting, 1);
+}
+
+TEST_F(ZeroStatePromoPageHandlerTest, LaunchProductivityLink) {
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kProductivity, 0);
+
+  handler().LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked::kProductivity);
+
+  ASSERT_EQ(2, browser()->tab_strip_model()->count());
+  ASSERT_EQ(zero_state_promo::mojom::kProductivityWebStoreUrl,
+            browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kProductivity, 1);
+}
+
+TEST_F(ZeroStatePromoPageHandlerTest, LaunchAiLink) {
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kAi, 0);
+
+  handler().LaunchWebStoreLink(
+      zero_state_promo::mojom::WebStoreLinkClicked::kAi);
+
+  ASSERT_EQ(2, browser()->tab_strip_model()->count());
+  ASSERT_EQ(zero_state_promo::mojom::kAiWebStoreUrl,
+            browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+  ExpectZeroStatePromoLinkClickCount(
+      zero_state_promo::mojom::WebStoreLinkClicked::kAi, 1);
+}
+}  // namespace extensions
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.cc b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.cc
new file mode 100644
index 0000000..13bdbd1b
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.cc
@@ -0,0 +1,82 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h"
+
+#include <string>
+#include <utility>
+
+#include "base/containers/span.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profiles_state.h"
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h"
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/grit/extensions_zero_state_promo_resources.h"
+#include "chrome/grit/extensions_zero_state_promo_resources_map.h"
+#include "chrome/grit/generated_resources.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_ui.h"
+#include "content/public/browser/web_ui_data_source.h"
+#include "ui/base/webui/web_ui_util.h"
+#include "ui/views/style/platform_style.h"
+#include "ui/webui/webui_util.h"
+
+namespace extensions {
+
+DEFINE_TOP_CHROME_WEBUI_CONFIG(ZeroStatePromoController)
+
+ZeroStatePromoController::ZeroStatePromoController(content::WebUI* web_ui)
+    : TopChromeWebUIController(web_ui, true) {
+  Profile* const profile = Profile::FromWebUI(web_ui);
+  content::WebUIDataSource* source = content::WebUIDataSource::CreateAndAdd(
+      profile, chrome::kChromeUIExtensionsZeroStatePromoHost);
+
+  static constexpr webui::LocalizedString kLocalizedStrings[] = {
+      {"extensionsZeroStateIphHeader", IDS_EXTENSIONS_ZERO_STATE_IPH_HEADER},
+      {"extensionsZeroStateChipsIphDesc",
+       IDS_EXTENSIONS_ZERO_STATE_CHIPS_IPH_DESCRIPTION},
+      {"extensionsZeroStateIphShoppingCategoryLabel",
+       IDS_EXTENSIONS_ZERO_STATE_IPH_SHOPPING_CATEGORY_LABEL},
+      {"extensionsZeroStateIphWritingHelpCollectionLabel",
+       IDS_EXTENSIONS_ZERO_STATE_IPH_WRITING_HELP_COLLECTION_LABEL},
+      {"extensionsZeroStateIphProductivityCategoryLabel",
+       IDS_EXTENSIONS_ZERO_STATE_IPH_PRODUCTIVITY_CATEGORY_LABEL},
+      {"extensionsZeroStateIphAiProductivityCollectionLabel",
+       IDS_EXTENSIONS_ZERO_STATE_IPH_AI_PRODUCTIVITY_COLLECTION_LABEL},
+      {"extensionsZeroStateIphDismissButtonTitle",
+       IDS_EXTENSIONS_ZERO_STATE_IPH_DISMISS_BUTTON_TITLE},
+  };
+  source->AddLocalizedStrings(kLocalizedStrings);
+
+  webui::SetupWebUIDataSource(
+      source, kExtensionsZeroStatePromoResources,
+      IDR_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_HTML);
+}
+
+ZeroStatePromoController::~ZeroStatePromoController() = default;
+
+WEB_UI_CONTROLLER_TYPE_IMPL(ZeroStatePromoController)
+
+void ZeroStatePromoController::BindInterface(
+    mojo::PendingReceiver<zero_state_promo::mojom::PageHandlerFactory>
+        receiver) {
+  page_factory_receiver_.reset();
+  page_factory_receiver_.Bind(std::move(receiver));
+}
+
+void ZeroStatePromoController::BindInterface(
+    mojo::PendingReceiver<
+        custom_help_bubble::mojom::CustomHelpBubbleHandlerFactory>
+        pending_receiver) {
+  CustomWebUIHelpBubbleController::BindInterface(std::move(pending_receiver));
+}
+
+void ZeroStatePromoController::CreatePageHandler(
+    mojo::PendingReceiver<zero_state_promo::mojom::PageHandler> receiver) {
+  page_handler_ = std::make_unique<ZeroStatePromoPageHandler>(
+      Profile::FromWebUI(web_ui()), std::move(receiver));
+}
+
+}  // namespace extensions
diff --git a/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h
new file mode 100644
index 0000000..662beef
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_ui.h
@@ -0,0 +1,67 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_UI_H_
+#define CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_UI_H_
+
+#include <memory>
+
+#include "chrome/browser/ui/views/user_education/custom_webui_help_bubble.h"
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom.h"
+#include "chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo_page_handler.h"
+#include "chrome/browser/ui/webui/top_chrome/top_chrome_web_ui_controller.h"
+#include "chrome/common/webui_url_constants.h"
+#include "content/public/browser/webui_config.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+
+namespace extensions {
+
+class ZeroStatePromoController
+    : public TopChromeWebUIController,
+      public CustomWebUIHelpBubbleController,
+      public zero_state_promo::mojom::PageHandlerFactory {
+ public:
+  explicit ZeroStatePromoController(content::WebUI* web_ui);
+
+  ZeroStatePromoController(const ZeroStatePromoController&) = delete;
+  ZeroStatePromoController& operator=(const ZeroStatePromoController&) = delete;
+
+  ~ZeroStatePromoController() override;
+
+  // Instantiates the implementor of the mojom::PageHandlerFactory mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
+      mojo::PendingReceiver<zero_state_promo::mojom::PageHandlerFactory>
+          receiver);
+
+  void BindInterface(mojo::PendingReceiver<
+                     custom_help_bubble::mojom::CustomHelpBubbleHandlerFactory>
+                         pending_receiver);
+
+  static constexpr std::string GetWebUIName() {
+    return "ExtensionsWebStoreZeroStatePromo";
+  }
+
+ private:
+  // zero_state_promo::mojom::PageHandlerFactory:
+  void CreatePageHandler(
+      mojo::PendingReceiver<zero_state_promo::mojom::PageHandler> receiver)
+      override;
+
+  std::unique_ptr<ZeroStatePromoPageHandler> page_handler_;
+
+  mojo::Receiver<zero_state_promo::mojom::PageHandlerFactory>
+      page_factory_receiver_{this};
+
+  WEB_UI_CONTROLLER_TYPE_DECL();
+};
+
+DECLARE_TOP_CHROME_WEBUI_CONFIG(ZeroStatePromoController,
+                                chrome::kChromeUIExtensionsZeroStatePromoHost);
+
+}  // namespace extensions
+
+#endif  // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_ZERO_STATE_PROMO_ZERO_STATE_PROMO_UI_H_
diff --git a/chrome/browser/ui/webui/intro/intro_handler.cc b/chrome/browser/ui/webui/intro/intro_handler.cc
index 7763ceb..a8177a5 100644
--- a/chrome/browser/ui/webui/intro/intro_handler.cc
+++ b/chrome/browser/ui/webui/intro/intro_handler.cc
@@ -29,6 +29,7 @@
 #include "components/signin/public/identity_manager/identity_manager.h"
 #include "components/signin/public/identity_manager/signin_constants.h"
 #include "content/public/browser/web_ui.h"
+#include "content/public/browser/web_ui_data_source.h"
 #include "google_apis/gaia/core_account_id.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -166,10 +167,12 @@
 IntroHandler::IntroHandler(
     base::RepeatingCallback<void(IntroChoice)> intro_callback,
     base::OnceCallback<void(DefaultBrowserChoice)> default_browser_callback,
-    bool is_device_managed)
+    bool is_device_managed,
+    std::string_view source_name)
     : intro_callback_(std::move(intro_callback)),
       default_browser_callback_(std::move(default_browser_callback)),
-      is_device_managed_(is_device_managed) {
+      is_device_managed_(is_device_managed),
+      source_name_(source_name) {
   DCHECK(intro_callback_);
   DCHECK(default_browser_callback_);
 }
@@ -249,6 +252,20 @@
   }
 }
 
+void IntroHandler::SetCanPinToTaskbar(bool can_pin) {
+  if (can_pin) {
+    base::Value::Dict update;
+    update.Set(
+        "defaultBrowserTitle",
+        l10n_util::GetStringUTF16(IDS_FRE_DEFAULT_BROWSER_AND_PINNING_TITLE));
+    update.Set("defaultBrowserSubtitle",
+               l10n_util::GetStringUTF16(
+                   IDS_FRE_DEFAULT_BROWSER_AND_PINNING_SUBTITLE));
+    content::WebUIDataSource::Update(Profile::FromWebUI(web_ui()), source_name_,
+                                     std::move(update));
+  }
+}
+
 void IntroHandler::FireManagedDisclaimerUpdate(std::string disclaimer) {
   DCHECK(is_device_managed_);
   if (IsJavascriptAllowed()) {
diff --git a/chrome/browser/ui/webui/intro/intro_handler.h b/chrome/browser/ui/webui/intro/intro_handler.h
index 9506e5d..b1f64c3b 100644
--- a/chrome/browser/ui/webui/intro/intro_handler.h
+++ b/chrome/browser/ui/webui/intro/intro_handler.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_BROWSER_UI_WEBUI_INTRO_INTRO_HANDLER_H_
 #define CHROME_BROWSER_UI_WEBUI_INTRO_INTRO_HANDLER_H_
 
+#include <string_view>
+
 #include "base/functional/callback_forward.h"
 #include "components/policy/core/common/cloud/cloud_policy_store.h"
 #include "components/signin/public/base/signin_buildflags.h"
@@ -23,7 +25,8 @@
   explicit IntroHandler(
       base::RepeatingCallback<void(IntroChoice)> intro_callback,
       base::OnceCallback<void(DefaultBrowserChoice)> default_browser_callback,
-      bool is_device_managed);
+      bool is_device_managed,
+      std::string_view source_name);
 
   IntroHandler(const IntroHandler&) = delete;
   IntroHandler& operator=(const IntroHandler&) = delete;
@@ -36,6 +39,10 @@
   void ResetIntroButtons();
   void ResetDefaultBrowserButtons();
 
+  // This updates the strings displayed in the set as default page of the first
+  // run experience to indicate that it will also pin Chrome to the taskbar.
+  void SetCanPinToTaskbar(bool can_pin);
+
  private:
   // Handles "continueWithAccount" message from the page. No arguments.
   // This message is sent when the user confirms that they want to sign in to
@@ -68,6 +75,9 @@
   base::OnceCallback<void(DefaultBrowserChoice)> default_browser_callback_;
   const bool is_device_managed_ = false;
   std::unique_ptr<policy::CloudPolicyStore::Observer> policy_store_observer_;
+
+  // Name of the WebUIDataSource to update.
+  std::string source_name_;
 };
 
 #endif  // CHROME_BROWSER_UI_WEBUI_INTRO_INTRO_HANDLER_H_
diff --git a/chrome/browser/ui/webui/intro/intro_ui.cc b/chrome/browser/ui/webui/intro/intro_ui.cc
index cfa6c5e..27c5cff 100644
--- a/chrome/browser/ui/webui/intro/intro_ui.cc
+++ b/chrome/browser/ui/webui/intro/intro_ui.cc
@@ -95,7 +95,7 @@
       base::BindRepeating(&IntroUI::HandleSigninChoice, base::Unretained(this)),
       base::BindOnce(&IntroUI::HandleDefaultBrowserChoice,
                      base::Unretained(this)),
-      is_device_managed);
+      is_device_managed, chrome::kChromeUIIntroHost);
   intro_handler_ = intro_handler.get();
   web_ui->AddMessageHandler(std::move(intro_handler));
 }
@@ -139,4 +139,8 @@
   }
 }
 
+void IntroUI::SetCanPinToTaskbar(bool can_pin) {
+  intro_handler_->SetCanPinToTaskbar(can_pin);
+}
+
 WEB_UI_CONTROLLER_TYPE_IMPL(IntroUI)
diff --git a/chrome/browser/ui/webui/intro/intro_ui.h b/chrome/browser/ui/webui/intro/intro_ui.h
index 0ac1c1a..710c5566 100644
--- a/chrome/browser/ui/webui/intro/intro_ui.h
+++ b/chrome/browser/ui/webui/intro/intro_ui.h
@@ -72,6 +72,7 @@
 
   void SetSigninChoiceCallback(IntroSigninChoiceCallback callback);
   void SetDefaultBrowserCallback(DefaultBrowserCallback callback);
+  void SetCanPinToTaskbar(bool can_pin);
 
  private:
   void HandleSigninChoice(IntroChoice choice);
diff --git a/chrome/browser/ui/webui/metrics_internals/OWNERS b/chrome/browser/ui/webui/metrics_internals/OWNERS
index b4a3e38..22068804 100644
--- a/chrome/browser/ui/webui/metrics_internals/OWNERS
+++ b/chrome/browser/ui/webui/metrics_internals/OWNERS
@@ -3,5 +3,4 @@
 # Prefer sending CLs to below.
 lucnguyen@google.com
 
-per-file structured_metrics_internals_handler*=andrewbregger@google.com
 per-file field_trials_handler.*=harringtond@chromium.org
diff --git a/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h b/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h
index 903f7c81..d1cd39d 100644
--- a/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h
+++ b/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h
@@ -19,7 +19,7 @@
   kCallbackUnknownBeforeShown = 2,
   kMaxValue = kCallbackUnknownBeforeShown,
 };
-// LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxDialogCallbackState)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxDialogCallbackState)
 class PrivacySandboxDialogHandler : public content::WebUIMessageHandler {
  public:
   PrivacySandboxDialogHandler(
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index b0986f8..f89cd92c 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -154,10 +154,6 @@
 #endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
 #endif  // BUILDFLAG(IS_WIN)
 
-#if BUILDFLAG(USE_NSS_CERTS)
-#include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
-#endif
-
 #if BUILDFLAG(IS_LINUX)
 #include "ui/linux/linux_ui_factory.h"
 #include "ui/ozone/public/ozone_platform.h"
@@ -3802,10 +3798,6 @@
   AddSystemStrings(html_source);
 #endif
 
-#if BUILDFLAG(USE_NSS_CERTS)
-  certificate_manager::AddLocalizedStrings(html_source);
-#endif
-
   policy_indicator::AddLocalizedStrings(html_source);
   AddSecurityKeysStrings(html_source);
 
diff --git a/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc b/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc
index ac1d7cf5..b3590fd10 100644
--- a/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc
+++ b/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc
@@ -298,8 +298,6 @@
       instructions.push_back(
           RemoveStringPlaceholders(spec.bubble_title_string_id()));
     }
-    instructions.push_back(
-        RemoveStringPlaceholders(spec.bubble_body_string_id()));
   }
   return instructions;
 }
diff --git a/chrome/browser/vr/graphics_delegate_android.cc b/chrome/browser/vr/graphics_delegate_android.cc
index fd35d82..02d3141 100644
--- a/chrome/browser/vr/graphics_delegate_android.cc
+++ b/chrome/browser/vr/graphics_delegate_android.cc
@@ -140,7 +140,8 @@
   // they all have subtly different uses.
   // TODO(https://crbug.com/40909689): Consolidate this usage.
   gfx::Size buffer_size = GetTextureSize();
-  if (shared_buffer_ && shared_buffer_->size == buffer_size) {
+  if (shared_buffer_ && shared_buffer_->shared_image &&
+      shared_buffer_->shared_image->size() == buffer_size) {
     return true;
   }
 
@@ -197,10 +198,6 @@
                                egl_image.get());
   shared_buffer_->local_eglimage = std::move(egl_image);
 
-  // Save size to avoid resize next time.
-  DVLOG(1) << __func__ << ": resized to " << buffer_size.width() << "x"
-           << buffer_size.height();
-  shared_buffer_->size = buffer_size;
   return true;
 }
 
@@ -212,7 +209,6 @@
              << shared_buffer_->shared_image->mailbox().ToDebugString();
     mailbox_bridge_->DestroySharedImage(
         shared_buffer_->sync_token, std::move(shared_buffer_->shared_image));
-    shared_buffer_->size = {0, 0};
   }
 }
 
diff --git a/chrome/browser/webshare/BUILD.gn b/chrome/browser/webshare/BUILD.gn
index e077a8d..2b6bac4a 100644
--- a/chrome/browser/webshare/BUILD.gn
+++ b/chrome/browser/webshare/BUILD.gn
@@ -52,7 +52,10 @@
   ]
 
   if (is_chromeos) {
-    deps += [ "//chrome/browser/webshare/chromeos:unit_tests" ]
+    deps += [
+      "//chrome/browser/sharesheet",
+      "//chrome/browser/webshare/chromeos:unit_tests",
+    ]
   }
 
   if (is_chromeos || is_mac) {
diff --git a/chrome/browser/win/installer_downloader/BUILD.gn b/chrome/browser/win/installer_downloader/BUILD.gn
index b8eb0d90..fc97252 100644
--- a/chrome/browser/win/installer_downloader/BUILD.gn
+++ b/chrome/browser/win/installer_downloader/BUILD.gn
@@ -31,6 +31,7 @@
   public_deps = [ "//base" ]
 
   deps = [
+    ":infobar",
     ":prefs",
     "//chrome/browser:browser_process",
     "//chrome/browser/profiles",
@@ -38,6 +39,7 @@
     "//chrome/browser/ui/browser_window",
     "//chrome/browser/win:cloud_synced_folder_checker",
     "//components/download/public/common:public",
+    "//components/infobars/content",
     "//components/infobars/core",
     "//components/prefs",
     "//components/tabs:public",
@@ -46,16 +48,42 @@
 }
 
 source_set("infobar") {
+  friend = [
+    ":infobar_impl",
+    ":controller",
+  ]
+
   public = [ "installer_downloader_infobar_delegate.h" ]
 
-  sources = [ "installer_downloader_infobar_delegate.cc" ]
+  sources = [
+    "installer_downloader_active_browser_window_tracker.h",
+    "installer_downloader_infobar_window_active_tab_tracker.h",
+  ]
+
+  public_deps = [ "//base" ]
+
+  deps = [
+    "//chrome/browser/ui:browser_list",
+    "//components/infobars/core",
+    "//content/public/browser",
+    "//ui/base",
+  ]
+}
+
+source_set("infobar_impl") {
+  sources = [
+    "installer_downloader_active_browser_window_tracker.cc",
+    "installer_downloader_infobar_delegate.cc",
+    "installer_downloader_infobar_window_active_tab_tracker.cc",
+  ]
 
   deps = [
     ":controller",
-    "//base",
+    ":infobar",
     "//chrome/app:branded_strings_grit",
     "//chrome/app:generated_resources_grit",
     "//chrome/browser/ui",
+    "//chrome/browser/ui/browser_window",
     "//components/infobars/content",
     "//components/infobars/core",
     "//components/omnibox/browser:vector_icons",
@@ -91,3 +119,23 @@
     "//ui/base",
   ]
 }
+
+source_set("interactive_ui_tests") {
+  testonly = true
+
+  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
+
+  sources = [ "installer_downloader_interactive_uitest.cc" ]
+
+  deps = [
+    ":controller",
+    ":prefs",
+    "//chrome/browser:browser_process",
+    "//chrome/browser:global_features",
+    "//chrome/browser/ui:browser_element_identifiers",
+    "//chrome/browser/ui:ui",
+    "//chrome/test:test_support_ui",
+    "//content/test:test_support",
+    "//testing/gtest",
+  ]
+}
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.cc b/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.cc
new file mode 100644
index 0000000..27c7125
--- /dev/null
+++ b/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.cc
@@ -0,0 +1,70 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.h"
+
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/browser_window.h"
+
+namespace installer_downloader {
+
+InstallerDownloaderActiveBrowserWindowTracker::
+    InstallerDownloaderActiveBrowserWindowTracker() {
+  BrowserList::GetInstance()->AddObserver(this);
+  MaybeUpdateLastActiveWindow(BrowserList::GetInstance()->GetLastActive());
+}
+
+InstallerDownloaderActiveBrowserWindowTracker::
+    ~InstallerDownloaderActiveBrowserWindowTracker() {
+  BrowserList::GetInstance()->RemoveObserver(this);
+}
+
+base::CallbackListSubscription InstallerDownloaderActiveBrowserWindowTracker::
+    RegisterActiveWindowChangedCallback(WindowChangedCallback callback) {
+  auto subscription = active_window_change_callbacks_.Add(callback);
+  callback.Run(last_active_window_);
+  return subscription;
+}
+
+base::CallbackListSubscription
+InstallerDownloaderActiveBrowserWindowTracker::RegisterRemovedWindowCallback(
+    WindowChangedCallback callback) {
+  return window_remove_callbacks_.Add(callback);
+}
+
+void InstallerDownloaderActiveBrowserWindowTracker::OnBrowserSetLastActive(
+    Browser* browser) {
+  MaybeUpdateLastActiveWindow(browser);
+}
+
+void InstallerDownloaderActiveBrowserWindowTracker::OnBrowserRemoved(
+    Browser* browser) {
+  window_remove_callbacks_.Notify(
+      static_cast<BrowserWindowInterface*>(browser));
+
+  if (!last_active_window_ ||
+      static_cast<BrowserWindowInterface*>(browser) != last_active_window_) {
+    return;
+  }
+
+  MaybeUpdateLastActiveWindow(BrowserList::GetInstance()->GetLastActive());
+}
+
+void InstallerDownloaderActiveBrowserWindowTracker::MaybeUpdateLastActiveWindow(
+    Browser* browser) {
+  BrowserWindowInterface* last_active_window =
+      browser && browser->is_type_normal()
+          ? static_cast<BrowserWindowInterface*>(browser)
+          : nullptr;
+
+  if (last_active_window == last_active_window_) {
+    return;
+  }
+
+  last_active_window_ = last_active_window;
+  active_window_change_callbacks_.Notify(last_active_window_);
+}
+
+}  // namespace installer_downloader
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.h b/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.h
new file mode 100644
index 0000000..ba0d30a
--- /dev/null
+++ b/chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.h
@@ -0,0 +1,70 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_ACTIVE_BROWSER_WINDOW_TRACKER_H_
+#define CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_ACTIVE_BROWSER_WINDOW_TRACKER_H_
+
+#include "base/callback_list.h"
+#include "base/functional/callback_forward.h"
+#include "base/memory/raw_ptr.h"
+#include "chrome/browser/ui/browser_list_observer.h"
+
+class BrowserWindowInterface;
+
+namespace installer_downloader {
+
+// Lightweight helper that always knows which *normal* browser window was last
+// activated. Observers can register for change notifications.
+// - The tracker **does not** own the window.
+// - When the last window closes, `active_window()` returns `nullptr`.
+class InstallerDownloaderActiveBrowserWindowTracker final
+    : public BrowserListObserver {
+ public:
+  using WindowChangedCallback =
+      base::RepeatingCallback<void(BrowserWindowInterface*)>;
+
+  InstallerDownloaderActiveBrowserWindowTracker();
+
+  InstallerDownloaderActiveBrowserWindowTracker(
+      const InstallerDownloaderActiveBrowserWindowTracker&) = delete;
+  InstallerDownloaderActiveBrowserWindowTracker& operator=(
+      const InstallerDownloaderActiveBrowserWindowTracker&) = delete;
+
+  ~InstallerDownloaderActiveBrowserWindowTracker() override;
+
+  // Register for active window changes. The callback is invoked immediately
+  // with the current active window, then on every subsequent change.
+  base::CallbackListSubscription RegisterActiveWindowChangedCallback(
+      WindowChangedCallback callback);
+
+  // Register for window remove changes. The callback is invoked immediately
+  // when a browser window is removed.
+  base::CallbackListSubscription RegisterRemovedWindowCallback(
+      WindowChangedCallback callback);
+
+ private:
+  // BrowserListObserver:
+  void OnBrowserSetLastActive(Browser* browser) override;
+  void OnBrowserRemoved(Browser* browser) override;
+
+  // Helps to update `last_active_window_` when the active browser changes or
+  // when a browser removed.
+  void MaybeUpdateLastActiveWindow(Browser* browser);
+
+  // Track the last active window. It can be null if all the browser window type
+  // are not normal.
+  raw_ptr<BrowserWindowInterface> last_active_window_;
+
+  // Stores the list of callback listening for active browser window change.
+  base::RepeatingCallbackList<void(BrowserWindowInterface*)>
+      active_window_change_callbacks_;
+
+  // Stores the list of callback listening for browser window remove event.
+  base::RepeatingCallbackList<void(BrowserWindowInterface*)>
+      window_remove_callbacks_;
+};
+
+}  // namespace installer_downloader
+
+#endif  // CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_ACTIVE_BROWSER_WINDOW_TRACKER_H_
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_controller.cc b/chrome/browser/win/installer_downloader/installer_downloader_controller.cc
index 295b2fd..870a47c 100644
--- a/chrome/browser/win/installer_downloader/installer_downloader_controller.cc
+++ b/chrome/browser/win/installer_downloader/installer_downloader_controller.cc
@@ -10,9 +10,11 @@
 
 #include "base/base_paths.h"
 #include "base/check_deref.h"
+#include "base/check_is_test.h"
 #include "base/files/file_path.h"
 #include "base/functional/bind.h"
 #include "base/functional/callback.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/path_service.h"
 #include "base/strings/string_util.h"
 #include "base/uuid.h"
@@ -22,9 +24,13 @@
 #include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
 #include "chrome/browser/ui/browser_window/public/browser_window_interface_iterator.h"
 #include "chrome/browser/win/installer_downloader/installer_downloader_feature.h"
+#include "chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.h"
 #include "chrome/browser/win/installer_downloader/installer_downloader_model.h"
 #include "chrome/browser/win/installer_downloader/installer_downloader_model_impl.h"
 #include "chrome/browser/win/installer_downloader/system_info_provider_impl.h"
+#include "components/infobars/content/content_infobar_manager.h"
+#include "components/infobars/core/confirm_infobar_delegate.h"
+#include "components/infobars/core/infobar.h"
 #include "components/tabs/public/tab_interface.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/download_manager.h"
@@ -76,7 +82,9 @@
       model_(std::make_unique<InstallerDownloaderModelImpl>(
           std::make_unique<SystemInfoProviderImpl>())),
       get_active_web_contents_callback_(
-          base::BindRepeating(&GetActiveWebContents)) {}
+          base::BindRepeating(&GetActiveWebContents)) {
+  RegisterBrowserWindowEvents();
+}
 
 InstallerDownloaderController::InstallerDownloaderController(
     ShowInfobarCallback show_infobar_callback,
@@ -86,15 +94,52 @@
       show_infobar_callback_(std::move(show_infobar_callback)),
       model_(std::move(model)),
       get_active_web_contents_callback_(
-          base::BindRepeating(&GetActiveWebContents)) {}
+          base::BindRepeating(&GetActiveWebContents)) {
+  RegisterBrowserWindowEvents();
+}
+
+void InstallerDownloaderController::RegisterBrowserWindowEvents() {
+  active_window_subscription_ =
+      window_tracker_.RegisterActiveWindowChangedCallback(base::BindRepeating(
+          &InstallerDownloaderController::OnActiveBrowserWindowChanged,
+          base::Unretained(this)));
+
+  removed_window_subscription_ =
+      window_tracker_.RegisterRemovedWindowCallback(base::BindRepeating(
+          &InstallerDownloaderController::OnRemovedBrowserWindow,
+          base::Unretained(this)));
+}
 
 InstallerDownloaderController::~InstallerDownloaderController() = default;
 
-void InstallerDownloaderController::MaybeShowInfoBar() {
-  // At this point, the decision to show the infobar should be taken.
-  // 1. Check local state whether shown limit has been reached or not.
-  // 2. Check eligibility.
+void InstallerDownloaderController::OnActiveBrowserWindowChanged(
+    BrowserWindowInterface* bwi) {
+  // This can be null during  the startup or when the last window is closed.
+  if (!bwi) {
+    return;
+  }
 
+  if (bwi_and_active_tab_tracker_map_.contains(bwi)) {
+    return;
+  }
+
+  bwi_and_active_tab_tracker_map_[bwi] =
+      std::make_unique<InstallerDownloaderInfobarWindowActiveTabTracker>(
+          bwi,
+          base::BindRepeating(&InstallerDownloaderController::MaybeShowInfoBar,
+                              base::Unretained(this)));
+}
+
+void InstallerDownloaderController::OnRemovedBrowserWindow(
+    BrowserWindowInterface* bwi) {
+  if (!bwi_and_active_tab_tracker_map_.contains(bwi)) {
+    return;
+  }
+
+  bwi_and_active_tab_tracker_map_.erase(bwi);
+}
+
+void InstallerDownloaderController::MaybeShowInfoBar() {
   // The max show count of the infobar have been reached. Eligibility check is
   // no longer needed.
   if (model_->IsMaxShowCountReached()) {
@@ -108,6 +153,20 @@
 
 void InstallerDownloaderController::OnEligibilityReady(
     std::optional<base::FilePath> destination) {
+  if (infobar_closed_) {
+    return;
+  }
+
+  auto* contents = get_active_web_contents_callback_.Run();
+
+  if (!contents) {
+    return;
+  }
+
+  if (visible_infobars_web_contents_.contains(contents)) {
+    return;
+  }
+
   // Early return when we have no destination and bypass is not allowed.
   if (!destination.has_value() && !model_->ShouldByPassEligibilityCheck()) {
     return;
@@ -123,28 +182,72 @@
     destination = std::move(desktop_path);
   }
 
-  // TODO(https://crbug.com/417708652): Ensure that the infobar is visible on
-  // the last activated windows.
-  auto* contents = get_active_web_contents_callback_.Run();
-
-  if (!contents) {
-    return;
-  }
+  infobars::ContentInfoBarManager* infobar_manager =
+      infobars::ContentInfoBarManager::FromWebContents(contents);
 
   // Installer Downloader is a global feature, therefore it's guaranteed that
   // InstallerDownloaderController will be alive at any point during the browser
   // runtime.
-  show_infobar_callback_.Run(
-      contents,
+  infobars::InfoBar* infobar = show_infobar_callback_.Run(
+      infobar_manager,
       base::BindOnce(&InstallerDownloaderController::OnDownloadRequestAccepted,
                      base::Unretained(this), destination.value()),
       base::BindOnce(&InstallerDownloaderController::OnInfoBarDismissed,
                      base::Unretained(this)));
-  model_->IncrementShowCount();
+
+  if (!infobar) {
+    return;
+  }
+
+  if (infobar_manager) {
+    infobar_manager->AddObserver(this);
+  } else {
+    CHECK_IS_TEST();
+  }
+
+  visible_infobars_web_contents_[contents] = infobar;
+
+  // This is the first show in this browser session.
+  if (visible_infobars_web_contents_.size() == 1u) {
+    model_->IncrementShowCount();
+    base::UmaHistogramBoolean("Windows.InstallerDownloader.InfobarShown",
+                              /*shown=*/true);
+  }
+}
+
+void InstallerDownloaderController::OnInfoBarRemoved(infobars::InfoBar* infobar,
+                                                     bool animate) {
+  auto it = std::find_if(
+      visible_infobars_web_contents_.begin(),
+      visible_infobars_web_contents_.end(),
+      [infobar](const auto& entry) { return entry.second == infobar; });
+
+  if (it == visible_infobars_web_contents_.end()) {
+    return;
+  }
+
+  it->second->owner()->RemoveObserver(this);
+  visible_infobars_web_contents_.erase(it);
+
+  if (!user_initiated_info_bar_close_pending_) {
+    return;
+  }
+
+  for (auto [contents, infobar_instance] : visible_infobars_web_contents_) {
+    infobar_instance->owner()->RemoveObserver(this);
+    infobar_instance->RemoveSelf();
+  }
+
+  visible_infobars_web_contents_.clear();
+  infobar_closed_ = true;
 }
 
 void InstallerDownloaderController::OnDownloadRequestAccepted(
     const base::FilePath& destination) {
+  base::UmaHistogramBoolean("Windows.InstallerDownloader.RequestAccepted",
+                            true);
+
+  user_initiated_info_bar_close_pending_ = true;
   // User have explicitly gave download consent. Therefore, a background
   // download should be issued.
   auto* contents = get_active_web_contents_callback_.Run();
@@ -175,8 +278,8 @@
 void InstallerDownloaderController::OnDownloadCompleted(
     std::unique_ptr<ScopedProfileKeepAlive> keep_alive,
     bool success) {
-  // Update local state to indicated that downloaded have been successfully
-  // completed.
+  base::UmaHistogramBoolean("Windows.InstallerDownloader.DownloadSucceed",
+                            success);
 }
 
 void InstallerDownloaderController::SetActiveWebContentsCallbackForTesting(
@@ -185,8 +288,9 @@
 }
 
 void InstallerDownloaderController::OnInfoBarDismissed() {
-  // TODO(crbug.com/417709084):Dismisses all installer Downloader infobars
-  // since this infobar is global.
+  base::UmaHistogramBoolean("Windows.InstallerDownloader.RequestAccepted",
+                            false);
+  user_initiated_info_bar_close_pending_ = true;
 }
 
 }  // namespace installer_downloader
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_controller.h b/chrome/browser/win/installer_downloader/installer_downloader_controller.h
index bda5cfc8..f8295401 100644
--- a/chrome/browser/win/installer_downloader/installer_downloader_controller.h
+++ b/chrome/browser/win/installer_downloader/installer_downloader_controller.h
@@ -5,12 +5,18 @@
 #ifndef CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_CONTROLLER_H_
 #define CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_CONTROLLER_H_
 
+#include <map>
 #include <memory>
 #include <optional>
 
+#include "base/callback_list.h"
 #include "base/functional/callback.h"
+#include "base/scoped_multi_source_observation.h"
+#include "chrome/browser/win/installer_downloader/installer_downloader_active_browser_window_tracker.h"
+#include "components/infobars/core/infobar_manager.h"
 
 class ScopedProfileKeepAlive;
+class BrowserWindowInterface;
 
 namespace base {
 class FilePath;
@@ -20,9 +26,16 @@
 class WebContents;
 }
 
+namespace infobars {
+class InfoBar;
+class ContentInfoBarManager;
+}  // namespace infobars
+
 namespace installer_downloader {
 
 class InstallerDownloaderModel;
+class InstallerDownloaderActiveBrowserWindowTracker;
+class InstallerDownloaderInfobarWindowActiveTabTracker;
 
 // UI-thread coordinator for the Installer Downloader.
 // The controller owns a single InstallerDownloaderModel instance and:
@@ -37,17 +50,18 @@
 // tod keep track the infobar show count.
 //
 // The controller is instantiated a GlobalFeature.
-class InstallerDownloaderController {
+class InstallerDownloaderController final
+    : public infobars::InfoBarManager::Observer {
  public:
   // A callback that will be run to show the installer download infobar in
   // `web_contents`.  `on_accept` will be run if the user accepts the prompt.
   // This will show the infobar on the actual tab.
   //
   // TODO(https://crbug.com/417709084): Make the infobar global to the browser.
-  using ShowInfobarCallback =
-      base::RepeatingCallback<void(content::WebContents* web_contents,
-                                   base::OnceClosure on_accept,
-                                   base::OnceClosure on_dismiss)>;
+  using ShowInfobarCallback = base::RepeatingCallback<infobars::InfoBar*(
+      infobars::ContentInfoBarManager*,
+      base::OnceClosure on_accept,
+      base::OnceClosure on_dismiss)>;
 
   using GetActiveWebContentsCallback =
       base::RepeatingCallback<content::WebContents*()>;
@@ -64,7 +78,7 @@
   InstallerDownloaderController& operator=(
       const InstallerDownloaderController&) = delete;
 
-  ~InstallerDownloaderController();
+  ~InstallerDownloaderController() override;
 
   // Called early during the browser startup and will show the installer
   // downloader infobar if a set of conditions are met.
@@ -81,15 +95,60 @@
       GetActiveWebContentsCallback callback);
 
  private:
+  using BrowserAndActiveTabTrackerMap = std::map<
+      BrowserWindowInterface*,
+      std::unique_ptr<InstallerDownloaderInfobarWindowActiveTabTracker>>;
+
   void OnEligibilityReady(std::optional<base::FilePath> destination);
   void OnDownloadCompleted(std::unique_ptr<ScopedProfileKeepAlive> keep_alive,
                            bool success);
 
+  void RegisterBrowserWindowEvents();
+
+  void OnActiveBrowserWindowChanged(BrowserWindowInterface* bwi);
+  void OnRemovedBrowserWindow(BrowserWindowInterface* bwi);
+
+  // infobars::InfoBarManager::Observer:
+  void OnInfoBarRemoved(infobars::InfoBar* infobar, bool animate) override;
+
   base::RepeatingCallback<bool()> is_metrics_enabled_callback_;
 
   ShowInfobarCallback show_infobar_callback_;
   std::unique_ptr<InstallerDownloaderModel> model_;
   GetActiveWebContentsCallback get_active_web_contents_callback_;
+
+  // Tracks the last active browser / future browser window and notify the
+  // subscriber. This is important for future browser window so that we can
+  // subscribe for tab change in that window.
+  InstallerDownloaderActiveBrowserWindowTracker window_tracker_;
+
+  // Stores the subscription for the active window change.
+  base::CallbackListSubscription active_window_subscription_;
+
+  // Stores the subscription for the removed window change.
+  base::CallbackListSubscription removed_window_subscription_;
+
+  // Stores all the active tab tracker across all the window.
+  BrowserAndActiveTabTrackerMap bwi_and_active_tab_tracker_map_;
+
+  // Tracks the visible infobars with te associated web contents.
+  std::map<content::WebContents*, infobars::InfoBar*>
+      visible_infobars_web_contents_;
+
+  // If `true`, that mean the infobar has been closed by the user during the
+  // actual browser session. As a result, the infobar should no longer be
+  // visible until the next browser session.
+  bool infobar_closed_ = false;
+
+  // Accept/Dismiss callbacks are invoked before the infobar get removed. This
+  // flag will indicated that the close event has been initiate by the user or
+  // not. In the case where the close event has been initiated by the user, all
+  // the instance of the infobar should get removed. In all the other cases,
+  // only the specific infobar will get removed. Following are some of those
+  // cases:
+  // 1. Close tab.
+  // 2. Close browser window.
+  bool user_initiated_info_bar_close_pending_ = false;
 };
 
 }  // namespace installer_downloader
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_controller_unittest.cc b/chrome/browser/win/installer_downloader/installer_downloader_controller_unittest.cc
index 8480b5d..0c9b02be 100644
--- a/chrome/browser/win/installer_downloader/installer_downloader_controller_unittest.cc
+++ b/chrome/browser/win/installer_downloader/installer_downloader_controller_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/test/bind.h"
 #include "base/test/gmock_callback_support.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_path_override.h"
@@ -131,7 +132,8 @@
   EXPECT_CALL(*mock_model_, CheckEligibility(_))
       .WillOnce(base::test::RunOnceCallback<0>(
           std::optional<base::FilePath>(FILE_PATH_LITERAL("C:\\foo"))));
-  EXPECT_CALL(show_infobar_callback_, Run(_, _, _)).Times(1);
+  EXPECT_CALL(show_infobar_callback_, Run(_, _, _))
+      .WillOnce(Return(reinterpret_cast<infobars::InfoBar*>(0x1)));
   EXPECT_CALL(*mock_model_, IncrementShowCount()).Times(1);
 
   controller_->MaybeShowInfoBar();
@@ -249,12 +251,14 @@
   EXPECT_CALL(*mock_model_, IsMaxShowCountReached()).WillOnce(Return(false));
   EXPECT_CALL(*mock_model_, ShouldByPassEligibilityCheck())
       .WillOnce(Return(true));
+  EXPECT_CALL(*mock_model_, IncrementShowCount()).Times(1);
   // Eligibility returns std::nullopt → controller must rely on the bypass path.
   EXPECT_CALL(*mock_model_, CheckEligibility(_))
       .WillOnce(RunOnceCallback<0>(std::nullopt));
 
   // When bypass is enabled we still expect the infobar to be shown.
-  EXPECT_CALL(show_infobar_callback_, Run(_, _, _)).Times(1);
+  EXPECT_CALL(show_infobar_callback_, Run(_, _, _))
+      .WillOnce(Return(reinterpret_cast<infobars::InfoBar*>(0x1)));
 
   controller_->MaybeShowInfoBar();
 }
@@ -266,10 +270,80 @@
           std::optional<base::FilePath>(base::FilePath(L"C:\\foo"))));
   EXPECT_CALL(*mock_model_, IncrementShowCount()).Times(1);
 
-  EXPECT_CALL(show_infobar_callback_, Run(_, _, _)).Times(1);
+  EXPECT_CALL(show_infobar_callback_, Run(_, _, _))
+      .WillOnce(Return(reinterpret_cast<infobars::InfoBar*>(0x1)));
 
   controller_->MaybeShowInfoBar();
 }
 
+TEST_F(InstallerDownloaderControllerTest, InfobarShownLoggedOncePerSession) {
+  base::HistogramTester histograms;
+
+  EXPECT_CALL(*mock_model_, IsMaxShowCountReached())
+      .WillRepeatedly(Return(false));
+  EXPECT_CALL(*mock_model_, CheckEligibility(_))
+      .WillRepeatedly(base::test::RunOnceCallbackRepeatedly<0>(
+          std::optional<base::FilePath>(base::FilePath(L"C:\\foo"))));
+  EXPECT_CALL(*mock_model_, IncrementShowCount()).Times(1);
+
+  // Stub Show() so the controller thinks the infobar has been created.
+  EXPECT_CALL(show_infobar_callback_, Run(_, _, _))
+      .Times(1)
+      .WillOnce(Return(reinterpret_cast<infobars::InfoBar*>(0x1)));
+
+  // First display: should log.
+  controller_->MaybeShowInfoBar();
+  // Second display in the same session: should NOT log again.
+  controller_->MaybeShowInfoBar();
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.InfobarShown",
+                                /*true=*/1, /*expected_count=*/1);
+}
+
+TEST_F(InstallerDownloaderControllerTest, RequestAcceptedTrueMetric) {
+  base::HistogramTester histograms;
+
+  EXPECT_CALL(is_metric_enabled_mock_callback_, Run()).WillOnce(Return(true));
+  EXPECT_CALL(*mock_model_, StartDownload(_, _, _, _)).Times(1);
+
+  controller_->OnDownloadRequestAccepted(
+      base::FilePath(FILE_PATH_LITERAL("C:\\tmp\\installer.exe")));
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.RequestAccepted",
+                                /*true=*/1, /*expected_count=*/1);
+}
+
+TEST_F(InstallerDownloaderControllerTest, RequestAcceptedFalseMetric) {
+  base::HistogramTester histograms;
+
+  controller_->OnInfoBarDismissed();
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.RequestAccepted",
+                                /*false=*/0, /*expected_count=*/1);
+}
+
+TEST_F(InstallerDownloaderControllerTest, LogsDownloadResultMetric) {
+  base::HistogramTester histograms;
+
+  EXPECT_CALL(is_metric_enabled_mock_callback_, Run()).WillOnce(Return(true));
+
+  CompletionCallback download_completion_callback;
+
+  EXPECT_CALL(*mock_model_, StartDownload(_, _, _, _))
+      .WillOnce([&](const GURL&, const base::FilePath&,
+                    content::DownloadManager&, CompletionCallback callback) {
+        download_completion_callback = std::move(callback);
+      });
+
+  controller_->OnDownloadRequestAccepted(
+      base::FilePath(FILE_PATH_LITERAL("C:\\tmp\\installer.exe")));
+
+  ASSERT_TRUE(download_completion_callback);
+  std::move(download_completion_callback).Run(/*success=*/true);
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.DownloadSucceed",
+                                /*success=*/1, /*expected_count=*/1);
+}
+
 }  // namespace
 }  // namespace installer_downloader
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.cc b/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.cc
index 987891ab..dd7fa1a 100644
--- a/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.cc
+++ b/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.cc
@@ -34,16 +34,14 @@
 }  // namespace
 
 // static
-void InstallerDownloaderInfoBarDelegate::Show(content::WebContents* contents,
-                                              base::OnceClosure accept_cb,
-                                              base::OnceClosure close_cb) {
-  infobars::ContentInfoBarManager* infobar_manager =
-      infobars::ContentInfoBarManager::FromWebContents(contents);
-
+infobars::InfoBar* InstallerDownloaderInfoBarDelegate::Show(
+    infobars::ContentInfoBarManager* infobar_manager,
+    base::OnceClosure accept_cb,
+    base::OnceClosure close_cb) {
   std::unique_ptr<InstallerDownloaderInfoBarDelegate> delegate =
       std::make_unique<InstallerDownloaderInfoBarDelegate>(std::move(accept_cb),
                                                            std::move(close_cb));
-  infobar_manager->AddInfoBar(
+  return infobar_manager->AddInfoBar(
       std::make_unique<ConfirmInfoBar>(std::move(delegate)));
 }
 
@@ -72,6 +70,11 @@
   return false;
 }
 
+bool InstallerDownloaderInfoBarDelegate::Accept() {
+  std::move(accept_cb_).Run();
+  return true;
+}
+
 void InstallerDownloaderInfoBarDelegate::InfoBarDismissed() {
   std::move(close_cb_).Run();
 }
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.h b/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.h
index 3dd72aa..d7d72906 100644
--- a/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.h
+++ b/chrome/browser/win/installer_downloader/installer_downloader_infobar_delegate.h
@@ -15,6 +15,11 @@
 #include "ui/base/models/image_model.h"
 #include "ui/base/window_open_disposition.h"
 
+namespace infobars {
+class InfoBar;
+class ContentInfoBarManager;
+}  // namespace infobars
+
 namespace installer_downloader {
 
 class InstallerDownloaderInfoBarDelegate : public ConfirmInfoBarDelegate {
@@ -22,9 +27,9 @@
   // Creates a installer downloader infobar and adds it to the provided
   // `infobar_manager`. The `infobar_manager` will own the returned infobar.
   // `accept_cb` is called when the user accepts the infobar.
-  static void Show(content::WebContents* contents,
-                   base::OnceClosure accept_cb,
-                   base::OnceClosure close_cb);
+  static infobars::InfoBar* Show(infobars::ContentInfoBarManager* contents,
+                                 base::OnceClosure accept_cb,
+                                 base::OnceClosure close_cb);
 
   InstallerDownloaderInfoBarDelegate& operator=(
       const InstallerDownloaderInfoBarDelegate&) = delete;
@@ -37,6 +42,7 @@
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
   const gfx::VectorIcon& GetVectorIcon() const override;
   bool ShouldExpire(const NavigationDetails& details) const override;
+  bool Accept() override;
   void InfoBarDismissed() override;
   std::u16string GetMessageText() const override;
   std::u16string GetLinkText() const override;
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.cc b/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.cc
new file mode 100644
index 0000000..04f60f9
--- /dev/null
+++ b/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.cc
@@ -0,0 +1,31 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.h"
+
+#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
+
+namespace installer_downloader {
+
+InstallerDownloaderInfobarWindowActiveTabTracker::
+    InstallerDownloaderInfobarWindowActiveTabTracker(
+        BrowserWindowInterface* window,
+        base::RepeatingClosure show_infobar_callback)
+    : window_(window),
+      show_infobar_callback_(std::move(show_infobar_callback)) {
+  active_tab_subscription_ =
+      window_->RegisterActiveTabDidChange(base::BindRepeating(
+          &InstallerDownloaderInfobarWindowActiveTabTracker::OnActiveTabChanged,
+          base::Unretained(this)));
+}
+
+InstallerDownloaderInfobarWindowActiveTabTracker::
+    ~InstallerDownloaderInfobarWindowActiveTabTracker() = default;
+
+void InstallerDownloaderInfobarWindowActiveTabTracker::OnActiveTabChanged(
+    BrowserWindowInterface*) {
+  show_infobar_callback_.Run();
+}
+
+}  // namespace installer_downloader
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.h b/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.h
new file mode 100644
index 0000000..0d6370a
--- /dev/null
+++ b/chrome/browser/win/installer_downloader/installer_downloader_infobar_window_active_tab_tracker.h
@@ -0,0 +1,42 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_INFOBAR_WINDOW_ACTIVE_TAB_TRACKER_H_
+#define CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_INFOBAR_WINDOW_ACTIVE_TAB_TRACKER_H_
+
+#include "base/callback_list.h"
+#include "base/functional/callback_forward.h"
+#include "base/memory/raw_ptr.h"
+
+class BrowserWindowInterface;
+
+namespace installer_downloader {
+
+// It listens for `BrowserWindowInterface::RegisterActiveTabDidChange`
+// notifications and injects the banner into the currently active tab.
+class InstallerDownloaderInfobarWindowActiveTabTracker {
+ public:
+  InstallerDownloaderInfobarWindowActiveTabTracker(
+      BrowserWindowInterface* window,
+      base::RepeatingClosure show_infobar_callback);
+
+  InstallerDownloaderInfobarWindowActiveTabTracker(
+      const InstallerDownloaderInfobarWindowActiveTabTracker&) = delete;
+  InstallerDownloaderInfobarWindowActiveTabTracker& operator=(
+      const InstallerDownloaderInfobarWindowActiveTabTracker&) = delete;
+
+  ~InstallerDownloaderInfobarWindowActiveTabTracker();
+
+ private:
+  void OnActiveTabChanged(BrowserWindowInterface* window);
+
+  const raw_ptr<BrowserWindowInterface> window_;
+  base::RepeatingClosure show_infobar_callback_;
+
+  base::CallbackListSubscription active_tab_subscription_;
+};
+
+}  // namespace installer_downloader
+
+#endif  // CHROME_BROWSER_WIN_INSTALLER_DOWNLOADER_INSTALLER_DOWNLOADER_INFOBAR_WINDOW_ACTIVE_TAB_TRACKER_H_
diff --git a/chrome/browser/win/installer_downloader/installer_downloader_interactive_uitest.cc b/chrome/browser/win/installer_downloader/installer_downloader_interactive_uitest.cc
new file mode 100644
index 0000000..0c86109d
--- /dev/null
+++ b/chrome/browser/win/installer_downloader/installer_downloader_interactive_uitest.cc
@@ -0,0 +1,167 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/test/metrics/histogram_tester.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/global_features.h"
+#include "chrome/browser/ui/browser_element_identifiers.h"
+#include "chrome/browser/ui/views/infobars/confirm_infobar.h"
+#include "chrome/browser/win/installer_downloader/installer_downloader_controller.h"
+#include "chrome/browser/win/installer_downloader/installer_downloader_feature.h"
+#include "chrome/browser/win/installer_downloader/installer_downloader_pref_names.h"
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "chrome/test/interaction/interactive_browser_test.h"
+#include "content/public/test/browser_test.h"
+#include "url/gurl.h"
+
+namespace installer_downloader {
+namespace {
+
+DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kSecondTabContents);
+
+// A valid template; IIDGUID and STATS are substituted at runtime.
+constexpr char kUrlTemplate[] =
+    "https://example.com/installer.exe?iid=IIDGUID&stats=STATS";
+
+class InstallerDownloaderInteractiveUiTest : public InteractiveBrowserTest {
+ protected:
+  void SetUp() override {
+    feature_list_.InitAndEnableFeatureWithParameters(
+        kInstallerDownloader,
+        {{kInstallerUrlTemplateParam.name, kUrlTemplate}});
+    InteractiveBrowserTest::SetUp();
+  }
+
+  InteractiveTestApi::MultiStep ShowInfobarOnNewTab() {
+    return Steps(AddInstrumentedTab(kSecondTabContents,
+                                    GURL(chrome::kChromeUINewTabURL)),
+                 WaitForShow(ConfirmInfoBar::kInfoBarElementId));
+  }
+
+  // Switches back to the first tab and verifies that the infobar is gone
+  // everywhere.
+  InteractiveTestApi::MultiStep VerifyNoInfobarInAnyTab() {
+    return Steps(WaitForHide(ConfirmInfoBar::kInfoBarElementId),
+                 SelectTab(kTabStripElementId, 0),
+                 WaitForHide(ConfirmInfoBar::kInfoBarElementId));
+  }
+
+  // Assumes that actual window have infobar visible. As a result, new window
+  // will also get the infobar.
+  InteractiveTestApi::MultiStep ShowInfobarInNewWindow() {
+    return Steps(Do([&]() { CreateBrowser(browser()->profile()); }),
+                 WaitForShow(ConfirmInfoBar::kInfoBarElementId));
+  }
+
+  // Should be invoked from window 1 and that window just removed infobar.
+  InteractiveTestApi::MultiStep VerifyNoInfobarInAnyContext() {
+    return Steps(WaitForHide(ConfirmInfoBar::kInfoBarElementId),
+                 SelectTab(kTabStripElementId, 0),
+                 WaitForHide(ConfirmInfoBar::kInfoBarElementId));
+  }
+
+  void TriggerInfobar() {
+    g_browser_process->local_state()->SetBoolean(
+        prefs::kInstallerDownloaderBypassEligibilityCheck, true);
+    g_browser_process->GetFeatures()
+        ->installer_downloader_controller()
+        ->MaybeShowInfoBar();
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       AcceptRemovesInfobarFromAllTabs) {
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  ShowInfobarOnNewTab(),
+                  PressButton(ConfirmInfoBar::kOkButtonElementId),
+                  VerifyNoInfobarInAnyTab());
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       DismissRemovesInfobarFromAllTabs) {
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  ShowInfobarOnNewTab(),
+                  PressButton(ConfirmInfoBar::kDismissButtonElementId),
+                  VerifyNoInfobarInAnyTab());
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       InfobarVisibleInFullscreen) {
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId), Do([&]() {
+                    ui_test_utils::ToggleFullscreenModeAndWait(browser());
+                  }),
+                  EnsurePresent(ConfirmInfoBar::kInfoBarElementId));
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       AcceptRemovesInfobarAcrossWindows) {
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  ShowInfobarInNewWindow(),
+                  PressButton(ConfirmInfoBar::kOkButtonElementId),
+                  VerifyNoInfobarInAnyContext());
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       DismissRemovesInfobarAcrossWindows) {
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  ShowInfobarInNewWindow(),
+                  PressButton(ConfirmInfoBar::kDismissButtonElementId),
+                  VerifyNoInfobarInAnyContext());
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       MetricsAcceptPath) {
+  base::HistogramTester histograms;
+
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  PressButton(ConfirmInfoBar::kOkButtonElementId),
+                  WaitForHide(ConfirmInfoBar::kInfoBarElementId));
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.InfobarShown",
+                                /*sample=*/1, /*expected_count=*/1);
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.RequestAccepted",
+                                /*sample=*/1, /*expected_count=*/1);
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       MetricsDismissPath) {
+  base::HistogramTester histograms;
+
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  PressButton(ConfirmInfoBar::kDismissButtonElementId),
+                  WaitForHide(ConfirmInfoBar::kInfoBarElementId));
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.InfobarShown",
+                                /*sample=*/1, /*expected_count=*/1);
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.RequestAccepted",
+                                /*sample=*/0, /*expected_count=*/1);
+}
+
+IN_PROC_BROWSER_TEST_F(InstallerDownloaderInteractiveUiTest,
+                       Metrics_InfobarShownOnceAcrossTabsAndWindows) {
+  base::HistogramTester histograms;
+
+  TriggerInfobar();
+  RunTestSequence(WaitForShow(ConfirmInfoBar::kInfoBarElementId),
+                  ShowInfobarOnNewTab(), ShowInfobarInNewWindow(),
+                  PressButton(ConfirmInfoBar::kDismissButtonElementId),
+                  VerifyNoInfobarInAnyContext());
+
+  histograms.ExpectUniqueSample("Windows.InstallerDownloader.InfobarShown",
+                                /*sample=*/1, /*expected_count=*/1);
+}
+
+}  // namespace
+}  // namespace installer_downloader
diff --git a/chrome/browser_exposed_mojom_targets.gni b/chrome/browser_exposed_mojom_targets.gni
index ef4ab27b..2780522 100644
--- a/chrome/browser_exposed_mojom_targets.gni
+++ b/chrome/browser_exposed_mojom_targets.gni
@@ -31,6 +31,7 @@
   "//chrome/browser/ui/webui/customize_buttons:mojo_bindings",
   "//chrome/browser/ui/webui/discards:mojo_bindings",
   "//chrome/browser/ui/webui/downloads:mojo_bindings",
+  "//chrome/browser/ui/webui/extensions_zero_state_promo:mojo_bindings",
   "//chrome/browser/ui/webui/infobar_internals:mojo_bindings",
   "//chrome/browser/ui/webui/user_education_internals:mojo_bindings",
   "//chrome/browser/ui/webui/location_internals:mojo_bindings",
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt
index 6c77e39..79a2ea8f 100644
--- a/chrome/build/android-arm32.pgo.txt
+++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@
-chrome-android32-main-1747958116-71d90e08d2fa9a822583b99f4c96ec0d81aced54-27634fa381c6426758aa5ee8e41e07eb20de6241.profdata
+chrome-android32-main-1748023160-53a3b1556380bfcb27513c10ea16b9ba771766c7-ba5d54c843a7dd86a525dab79eeddcc4197e83f1.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt
index eadf352a..d1f0021 100644
--- a/chrome/build/android-arm64.pgo.txt
+++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@
-chrome-android64-main-1748001916-183778ea8c9239b370cd604fcbbf72f0ec11cd42-d3517c32f4acb0c4902504e3c763e2990811bb2a.profdata
+chrome-android64-main-1748019711-187a71f3331a40aaaa690eec6e1a01e9126eeee1-2d9957d4d1ba001c88be55b67fa22e8aba370d93.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 9ba7d96..cd92b65c 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1748008746-6472960ed56b9340ad2fbb231f29536f0e734046-5815c7f5f5a10308fa464569f317957aa2b7b0e1.profdata
+chrome-mac-arm-main-1748023160-b5833ec68f910664fa0982de950c574f971396f5-ba5d54c843a7dd86a525dab79eeddcc4197e83f1.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 509712b..18460c0 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1747990697-2cc8b8da72a4884880fb256ab6d5e154edb0e268-8d4871ed0fecd503404a21988b9ae9c4910631d3.profdata
+chrome-win32-main-1748001307-f9b8539c940fd46e85b9377c1499f20bb27b9db7-234cda4f8d93a139ddc7594ad3e92323a331dcb2.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 4900fe4c..977f010 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1747968959-5d2e0f242d247ab01ec430bfda27bded5dfa587d-a442a1abdbd249132d1e0bb493c303a01c0bf597.profdata
+chrome-win64-main-1748001307-df1533fe61af95a74a599c2d305a848fef4d3e0f-234cda4f8d93a139ddc7594ad3e92323a331dcb2.profdata
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
index f0623c6..388b837 100644
--- a/chrome/chrome_paks.gni
+++ b/chrome/chrome_paks.gni
@@ -96,6 +96,12 @@
       sources += [ "$root_gen_dir/extensions/extensions_browser_resources_${percent}_percent.pak" ]
       deps += [ "//extensions:extensions_browser_resources" ]
     }
+    if (enable_extensions) {
+      sources +=
+          [ "$root_gen_dir/chrome/extensions_zero_state_promo_resources.pak" ]
+      deps +=
+          [ "//chrome/browser/resources/extensions_zero_state_promo:resources" ]
+    }
 
     output = "${invoker.output_dir}/chrome_${percent}_percent.pak"
   }
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index f130eb7..4feab9a3 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -1143,6 +1143,11 @@
              "SafetyHubDisruptiveNotificationRevocation",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+constexpr base::FeatureParam<int>
+    kSafetyHubDisruptiveNotificationRevocationExperimentVersion{
+        &kSafetyHubDisruptiveNotificationRevocation,
+        /*name=*/"experiment_version", /*default_value=*/0};
+
 constexpr base::FeatureParam<bool>
     kSafetyHubDisruptiveNotificationRevocationShadowRun{
         &kSafetyHubDisruptiveNotificationRevocation,
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 82dbdd1..dfd1bbff 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -679,6 +679,14 @@
 COMPONENT_EXPORT(CHROME_FEATURES)
 BASE_DECLARE_FEATURE(kSafetyHubDisruptiveNotificationRevocation);
 
+// And integer which tracks the current version of the running experiment for
+// disruptive notification revocation. Proposed revocations will be versioned
+// and ignored upon version change. This allows to ignore proposed revocations
+// from previous experiments in order to consistently revoke and report metrics.
+COMPONENT_EXPORT(CHROME_FEATURES)
+extern const base::FeatureParam<int>
+    kSafetyHubDisruptiveNotificationRevocationExperimentVersion;
+
 // Whether the disruptive notification revocation will be performed as a shadow
 // run (without actually revoking permissions). Used to collect metrics and
 // evaluate the conditions for autorevocation.
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
index 6ce299a..c35d525 100644
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -114,6 +114,10 @@
 inline constexpr char kChromeUIExtensionsInternalsHost[] =
     "extensions-internals";
 inline constexpr char kChromeUIExtensionsURL[] = "chrome://extensions/";
+inline constexpr char kChromeUIExtensionsZeroStatePromoHost[] =
+    "extensions-zero-state";
+inline constexpr char kChromeUIExtensionsZeroStatePromoURL[] =
+    "chrome://extensions-zero-state";
 inline constexpr char kChromeUIFamilyLinkUserInternalsHost[] =
     "family-link-user-internals";
 inline constexpr char kChromeUIFavicon2Host[] = "favicon2";
diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_model.h b/chrome/renderer/accessibility/read_anything/read_anything_app_model.h
index 4da0de8..ee0e24e 100644
--- a/chrome/renderer/accessibility/read_anything/read_anything_app_model.h
+++ b/chrome/renderer/accessibility/read_anything/read_anything_app_model.h
@@ -190,7 +190,11 @@
     color_theme_ = color_theme;
   }
 
-  bool has_selection() const { return start_.is_valid(); }
+  // Sometimes iframes can return selection objects that have a valid id but
+  // aren't in the tree.
+  bool has_selection() const {
+    return start_.is_valid() && GetAXNode(start_.id);
+  }
   ui::AXNodeID start_node_id() const { return start_.id; }
   ui::AXNodeID end_node_id() const { return end_.id; }
   int start_offset() const { return start_.offset; }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 9434f72..40cd21f 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -15,7 +15,6 @@
 import("//chrome/browser/downgrade/buildflags.gni")
 import("//chrome/browser/page_load_metrics/integration_tests/jsdeps.gni")
 import("//chrome/browser/page_load_metrics/integration_tests/sources.gni")
-import("//chrome/browser/sync/test/integration/sync_integration_tests.gni")
 import("//chrome/common/features.gni")
 import("//chrome/services/speech/buildflags/buildflags.gni")
 import("//chrome/test/include_js_tests.gni")
@@ -375,6 +374,8 @@
       "../browser/extensions/test_extension_environment.h",
       "../browser/extensions/test_extension_prefs.cc",
       "../browser/extensions/test_extension_prefs.h",
+      "../browser/ui/webui/extensions/extension_settings_test_base.cc",
+      "../browser/ui/webui/extensions/extension_settings_test_base.h",
       "../common/extensions/manifest_tests/chrome_manifest_test.cc",
       "../common/extensions/manifest_tests/chrome_manifest_test.h",
     ]
@@ -417,8 +418,6 @@
       "../browser/ui/web_applications/test/web_app_browsertest_util.h",
       "../browser/ui/web_applications/web_app_browsertest_base.cc",
       "../browser/ui/web_applications/web_app_browsertest_base.h",
-      "../browser/ui/webui/extensions/extension_settings_test_base.cc",
-      "../browser/ui/webui/extensions/extension_settings_test_base.h",
     ]
 
     deps += [
@@ -3783,7 +3782,6 @@
       data += [ "//chrome/browser/resources/chromeos/arc_support/i18n_template_no_process.js" ]
       sources += [
         "../browser/accessibility/media_app/ax_media_app_untrusted_service_browsertest.cc",
-        "../browser/certificate_manager_model_ash_browsertest.cc",
         "../browser/chromeos/enterprise/cloud_storage/one_drive_pref_observer_browsertest.cc",
         "../browser/media/webrtc/capture_policy_utils_browsertest.cc",
         "../browser/media/webrtc/get_all_screens_media_browsertest.cc",
@@ -9449,8 +9447,12 @@
 
     deps += [
       # TODO(crbug.com/419210492): Remove this dependency when chrome/browser/sharing_hub/sharing_hub_model_unittest.cc
-      # test (above) gets componentized.
+      # (above) gets componentized.
       "//chrome/browser/sharing_hub",
+
+      # TODO(crbug.com/419210492): Remove this dependency when chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl_unittest.cc
+      # (above) gets componentized.
+      "//chrome/browser/ui/sharing_hub:test_support_ui",
     ]
   }
 
@@ -10338,16 +10340,12 @@
       if (use_nss_certs) {
         sources += [
           "../browser/ui/views/crypto_module_password_dialog_view_unittest.cc",
-          "../browser/ui/webui/certificates_handler_unittest.cc",
         ]
       }
     }
   }
   if (use_nss_certs) {
-    sources += [
-      "../browser/certificate_manager_model_unittest.cc",
-      "../browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc",
-    ]
+    sources += [ "../browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc" ]
     if (is_chromeos) {
       sources += [
         "../browser/net/nss_temp_certs_cache_chromeos_unittest.cc",
@@ -10811,12 +10809,10 @@
     }
 
     if (is_win || is_mac || is_linux) {
-      sources += [
-        "../browser/ui/sharing_hub/fake_sharing_hub_bubble_controller.cc",
-        "../browser/ui/sharing_hub/fake_sharing_hub_bubble_controller.h",
+      deps += [
+        "//chrome/browser/ui/sharing_hub:test_support_ui",
+        "//chrome/browser/ui/webui/app_settings",
       ]
-
-      deps += [ "//chrome/browser/ui/webui/app_settings" ]
     }
 
     if (use_ozone) {
@@ -11268,6 +11264,7 @@
         "../browser/extensions/extension_keybinding_apitest.cc",
         "../browser/extensions/omnibox_focus_interactive_test.cc",
         "../browser/guest_view/mime_handler_view/chrome_mime_handler_view_interactive_uitest.cc",
+        "../browser/ui/webui/extensions_zero_state_promo/extensions_zero_state_promo_interactive_uitest.cc",
       ]
 
       deps += [
@@ -11344,6 +11341,11 @@
       ]
     }
 
+    if (is_win && is_chrome_branded) {
+      deps +=
+          [ "//chrome/browser/win/installer_downloader:interactive_ui_tests" ]
+    }
+
     if (toolkit_views) {
       sources += [
         "../browser/ui/toolbar/app_menu_fullscreen_interactive_uitest.cc",
@@ -12162,130 +12164,12 @@
 }
 
 if (!is_android) {
-  if (is_win) {
-    # TODO(crbug.com/419089901): Figure out why the below
-    # sync_integration_tests does not work on Windows.
-    test("sync_integration_tests") {
-      sources = sync_integration_tests_sources
-
-      data = [
-        "//chrome/test/data/password/",
-        "//chrome/test/data/sync/",
-        "//chrome/test/data/webapps_integration/",
-        "//chrome/test/data/web_apps/",
-        "//chrome/test/data/banners/",
-        "//net/tools/testserver/",
-        "//third_party/pywebsocket3/src/mod_pywebsocket/",
-      ]
-
-      # TODO(phajdan.jr): Only temporary, to make transition easier.
-      defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
-
-      deps = [
-        ":browser_tests_runner",
-        ":sync_integration_test_support",
-        ":test_support",
-        ":test_support_ui",
-        "//chrome:packed_resources",
-        "//chrome:resources",
-        "//chrome:strings",
-        "//chrome/app:chrome_dll_resources",
-        "//chrome/app:command_ids",
-        "//chrome/browser/affiliations",
-        "//chrome/browser/apps/link_capturing",
-        "//chrome/browser/autofill",
-        "//chrome/browser/browsing_data:constants",
-        "//chrome/browser/metrics/desktop_session_duration",
-        "//chrome/browser/plus_addresses",
-        "//chrome/browser/prefs",
-        "//chrome/browser/reading_list",
-        "//chrome/browser/search_engines",
-        "//chrome/browser/sync",
-        "//chrome/browser/themes",
-        "//chrome/browser/ui:browser_navigator_params_headers",
-        "//chrome/browser/ui:ui_features",
-        "//chrome/browser/web_applications:features",
-        "//chrome/browser/web_applications:web_applications_test_support",
-        "//chrome/common",
-        "//chrome/renderer",
-        "//components/app_constants",
-        "//components/bookmarks/browser",
-        "//components/bookmarks/test",
-        "//components/browser_sync",
-        "//components/commerce/core:feature_list",
-        "//components/consent_auditor",
-        "//components/data_sharing/public",
-        "//components/favicon/core",
-        "//components/history/content/browser",
-        "//components/history/core/common",
-        "//components/password_manager/core/browser/sharing",
-        "//components/plus_addresses",
-        "//components/plus_addresses:test_support",
-        "//components/plus_addresses/settings",
-        "//components/plus_addresses/settings:test_support",
-        "//components/plus_addresses/webdata",
-        "//components/power_bookmarks/common:test_support",
-        "//components/power_bookmarks/core",
-        "//components/reading_list/core",
-        "//components/reading_list/core:test_support",
-        "//components/saved_tab_groups/internal:tab_group_sync_bridge",
-        "//components/saved_tab_groups/test_support",
-        "//components/search_engines",
-        "//components/send_tab_to_self",
-        "//components/spellcheck/common",
-        "//components/sync",
-        "//components/sync:test_support",
-        "//components/sync_bookmarks",
-        "//components/sync_device_info:test_support",
-        "//components/sync_preferences:common_syncable_prefs_database",
-        "//components/trusted_vault",
-        "//components/trusted_vault:test_support",
-        "//components/undo",
-        "//components/version_info",
-        "//components/webapps/browser",
-        "//components/webapps/common",
-        "//components/webauthn/core/browser",
-        "//components/webauthn/core/browser:passkey_model",
-        "//testing/gmock",
-        "//testing/gtest",
-        "//third_party/blink/public:blink",
-        "//third_party/icu",
-        "//third_party/leveldatabase",
-      ]
-
-      data_deps = [
-        "//testing:test_scripts_shared",
-        "//testing/buildbot/filters:sync_integration_tests_filters",
-        "//third_party/angle:includes",
-      ]
-
-      data_deps += [ "//chrome:packed_resources" ]
-
-      deps += [
-        "//chrome:other_version",
-        "//third_party/wtl",
-        "//ui/resources",
-      ]
-
-      if (toolkit_views) {
-        deps += [ "//ui/views" ]
-      }
-      if (enable_printing) {
-        deps += [ "//printing" ]
-      }
-      if (enable_glic) {
-        deps += [
-          "//chrome/browser/glic",
-          "//chrome/browser/glic/test_support",
-        ]
-      }
-    }
-  } else {
-    test("sync_integration_tests") {
-      use_xvfb = use_xvfb_in_this_config
-      deps = [
-        "//chrome/browser/sync/test/integration:sync_integration_tests_impl",
-      ]
+  test("sync_integration_tests") {
+    use_xvfb = use_xvfb_in_this_config
+    deps =
+        [ "//chrome/browser/sync/test/integration:sync_integration_tests_impl" ]
+    if (is_win) {
+      configs += [ "//build/config/win:delayloads" ]
     }
   }
 
diff --git a/chrome/test/base/android/android_browser_test.cc b/chrome/test/base/android/android_browser_test.cc
index 230585d..45aff2a 100644
--- a/chrome/test/base/android/android_browser_test.cc
+++ b/chrome/test/base/android/android_browser_test.cc
@@ -93,3 +93,12 @@
 base::FilePath AndroidBrowserTest::GetChromeTestDataDir() const {
   return chrome_test_utils::GetChromeTestDataDir();
 }
+
+Profile* AndroidBrowserTest::GetProfile() const {
+  for (TabModel* model : TabModelList::models()) {
+    if (model->GetProfile()) {
+      return model->GetProfile();
+    }
+  }
+  return nullptr;
+}
diff --git a/chrome/test/base/android/android_browser_test.h b/chrome/test/base/android/android_browser_test.h
index d66f53a..592339e 100644
--- a/chrome/test/base/android/android_browser_test.h
+++ b/chrome/test/base/android/android_browser_test.h
@@ -7,6 +7,7 @@
 
 #include "base/files/scoped_temp_dir.h"
 #include "base/test/scoped_feature_list.h"
+#include "chrome/browser/profiles/profile.h"
 #include "content/public/test/browser_test_base.h"
 
 class PrefService;
@@ -67,6 +68,10 @@
   // Returns the test data path used by the embedded test server.
   base::FilePath GetChromeTestDataDir() const;
 
+  // Returns the profile. If there are multiple profiles, it's not determined
+  // what profile is returned.
+  Profile* GetProfile() const;
+
  private:
   // Temporary user data directory. Used only when a user data directory is not
   // specified in the command line.
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc
index 676e38a..14c0963 100644
--- a/chrome/test/base/in_process_browser_test.cc
+++ b/chrome/test/base/in_process_browser_test.cc
@@ -626,6 +626,10 @@
 #endif  // BUILDFLAG(IS_WIN);
 }
 
+Profile* InProcessBrowserTest::GetProfile() const {
+  return browser() ? browser()->profile() : nullptr;
+}
+
 void InProcessBrowserTest::CloseBrowserSynchronously(Browser* browser) {
   CloseBrowserAsynchronously(browser);
   ui_test_utils::WaitForBrowserToClose(browser);
diff --git a/chrome/test/base/in_process_browser_test.h b/chrome/test/base/in_process_browser_test.h
index 295e1c1..7d079bf 100644
--- a/chrome/test/base/in_process_browser_test.h
+++ b/chrome/test/base/in_process_browser_test.h
@@ -195,6 +195,10 @@
   // Tests can override this to customize the initial local_state.
   virtual void SetUpLocalStatePrefService(PrefService* local_state);
 
+  // Returns the profile. Prefer this method to browser()->profile() for
+  // cross-platform compatibility.
+  Profile* GetProfile() const;
+
  protected:
   // Closes the given browser and waits for it to release all its resources.
   void CloseBrowserSynchronously(Browser* browser);
diff --git a/chrome/test/data/pdf/ink2_manager_test.ts b/chrome/test/data/pdf/ink2_manager_test.ts
index ec3cfc6..79bd39a 100644
--- a/chrome/test/data/pdf/ink2_manager_test.ts
+++ b/chrome/test/data/pdf/ink2_manager_test.ts
@@ -7,9 +7,9 @@
 import {assert} from 'chrome://resources/js/assert.js';
 import {eventToPromise} from 'chrome://webui-test/test_util.js';
 
-import {assertAnnotationBrush, assertDeepEquals, MockDocumentDimensions, setGetAnnotationBrushReply, setupTestViewportAndMockPluginForInk} from './test_util.js';
+import {assertAnnotationBrush, assertDeepEquals, MockDocumentDimensions, setGetAnnotationBrushReply, setUpInkTestContext} from './test_util.js';
 
-const {viewport, mockPlugin} = setupTestViewportAndMockPluginForInk();
+const {viewport, mockPlugin, mockWindow} = setUpInkTestContext();
 const manager = Ink2Manager.getInstance();
 
 function getTestAnnotation(id: number): TextAnnotation {
@@ -340,6 +340,112 @@
     chrome.test.succeed();
   },
 
+  async function testInitializeTextboxNoLocation() {
+    // Update the viewport to be sufficiently large to accommodate a default
+    // size textbox for testing.
+    const documentDimensions = new MockDocumentDimensions(0, 0);
+    documentDimensions.addPage(400, 500);
+    viewport.setDocumentDimensions(documentDimensions);
+
+    // Make the viewport window larger.
+    mockWindow.setSize(500, 500);
+
+    let whenInitEvent = eventToPromise('initialize-text-box', manager);
+    // Initialize without a location. This is what happens when the user creates
+    // a textbox by using "Enter" on the plugin, instead of with the mouse.
+    manager.initializeTextAnnotation();
+    let initEvent = await whenInitEvent;
+
+    // The full document fits in the window.
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_HEIGHT, initEvent.detail.annotation.textBoxRect.height);
+    // The page is centered on the viewport in the x direction, so it runs from
+    // 55 to 445 after subtracting the 5px shadows on each side. The center is
+    // at (55 + 445) / 2 = 250. Subtract half the default width to get the left
+    // edge.
+    chrome.test.assertEq(
+        250 - DEFAULT_TEXTBOX_WIDTH / 2,
+        initEvent.detail.annotation.textBoxRect.locationX);
+    // The visible page starts at the y shadow/margin, which is 3, and is 490
+    // tall after accounting for shadows. The center is at
+    // (493 + 3) / 2 = 248. Subtract half the default height to get the top
+    // edge.
+    chrome.test.assertEq(
+        248 - DEFAULT_TEXTBOX_HEIGHT / 2,
+        initEvent.detail.annotation.textBoxRect.locationY);
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_WIDTH, initEvent.detail.annotation.textBoxRect.width);
+    chrome.test.assertEq(0, initEvent.detail.annotation.pageNumber);
+    chrome.test.assertEq(55, initEvent.detail.pageCoordinates.x);
+    chrome.test.assertEq(3, initEvent.detail.pageCoordinates.y);
+
+    // Zoom to 2.0. Now, the new annotation should be centered on the visible
+    // portion of the page.
+    viewport.setZoom(2.0);
+    whenInitEvent = eventToPromise('initialize-text-box', manager);
+    // Initialize without a location. This is what happens when the user creates
+    // a textbox by using "Enter" on the plugin, instead of with the mouse.
+    manager.initializeTextAnnotation();
+    initEvent = await whenInitEvent;
+
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_HEIGHT, initEvent.detail.annotation.textBoxRect.height);
+    // The page starts at the x shadow/margin, which is 10, and goes to the
+    // viewport edge. The center is (500 + 10) / 2 = 255. Subtract half the
+    // default width to get the left edge.
+    chrome.test.assertEq(
+        255 - DEFAULT_TEXTBOX_WIDTH / 2,
+        initEvent.detail.annotation.textBoxRect.locationX);
+    // The visible page starts at the y shadow/margin, which is 6, and goes to
+    // the viewport edge. The center is (500 + 6) / 2 = 253. Subtract half the
+    // default height to get the top edge.
+    chrome.test.assertEq(
+        253 - DEFAULT_TEXTBOX_HEIGHT / 2,
+        initEvent.detail.annotation.textBoxRect.locationY);
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_WIDTH, initEvent.detail.annotation.textBoxRect.width);
+    chrome.test.assertEq(0, initEvent.detail.annotation.pageNumber);
+    chrome.test.assertEq(10, initEvent.detail.pageCoordinates.x);
+    chrome.test.assertEq(6, initEvent.detail.pageCoordinates.y);
+
+    // Zoom to 0.5. The new box should still be centered on the page, even
+    // though it is not centered in the viewport.
+    viewport.setZoom(0.5);
+    whenInitEvent = eventToPromise('initialize-text-box', manager);
+    // Initialize without a location. This is what happens when the user creates
+    // a textbox by using "Enter" on the plugin, instead of with the mouse.
+    Ink2Manager.getInstance().initializeTextAnnotation();
+    initEvent = await whenInitEvent;
+
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_HEIGHT, initEvent.detail.annotation.textBoxRect.height);
+    // The page is centered on the viewport in the x direction, so it runs from
+    // 152.5 to 347.5. The center is at (152.5 + 347.5) / 2 = 250. Subtract half
+    // the default width to get the left edge.
+    chrome.test.assertEq(
+        250 - DEFAULT_TEXTBOX_WIDTH / 2,
+        initEvent.detail.annotation.textBoxRect.locationX);
+    // The page starts at the y margin/shadow of 1.5 and runs to 246.5 since it
+    // is 245 tall without the shadows. The center is at
+    // (1.5 + 246.5) / 2 = 124. Subtract half the default height to get the top
+    // edge.
+    chrome.test.assertEq(
+        124 - DEFAULT_TEXTBOX_HEIGHT / 2,
+        initEvent.detail.annotation.textBoxRect.locationY);
+    chrome.test.assertEq(
+        DEFAULT_TEXTBOX_WIDTH, initEvent.detail.annotation.textBoxRect.width);
+    chrome.test.assertEq(0, initEvent.detail.annotation.pageNumber);
+    chrome.test.assertEq(152.5, initEvent.detail.pageCoordinates.x);
+    chrome.test.assertEq(1.5, initEvent.detail.pageCoordinates.y);
+
+    // Reset zoom, window size and annotation id for next test.
+    viewport.setZoom(1.0);
+    manager.resetAnnotationIdForTest();
+    mockWindow.setSize(100, 100);
+
+    chrome.test.succeed();
+  },
+
   async function testInitializeTextBox() {
     // Create a new mock document dimensions that has different width from
     // height. This is relevant for testing different rotations.
diff --git a/chrome/test/data/pdf/ink2_text_box_test.ts b/chrome/test/data/pdf/ink2_text_box_test.ts
index f077c11..ec7aa31f 100644
--- a/chrome/test/data/pdf/ink2_text_box_test.ts
+++ b/chrome/test/data/pdf/ink2_text_box_test.ts
@@ -7,10 +7,10 @@
 import {keyDownOn, keyUpOn} from 'chrome://webui-test/keyboard_mock_interactions.js';
 import {eventToPromise, isVisible, microtasksFinished} from 'chrome://webui-test/test_util.js';
 
-import {assertDeepEquals, getRequiredElement, setupTestViewportAndMockPluginForInk} from './test_util.js';
+import {assertDeepEquals, getRequiredElement, setUpInkTestContext} from './test_util.js';
 
 // Set up a dummy viewport so that we can get a predictable initial state.
-const {viewport, mockPlugin} = setupTestViewportAndMockPluginForInk();
+const {viewport, mockPlugin} = setUpInkTestContext();
 const manager = Ink2Manager.getInstance();
 manager.initializeTextAnnotations();
 const textbox = document.createElement('ink-text-box');
@@ -784,6 +784,9 @@
     // Initialize to a 100x100 box at 10, 10. Place the box in the top corner
     // so that the viewport won't scroll when it is focused.
     initializeBox(100, 100, 10, 10);
+    // Wait for focus to happen so that we can correctly test focus changes
+    // later.
+    await eventToPromise('textbox-focused-for-test', textbox);
     await microtasksFinished();
     chrome.test.assertFalse(textbox.hidden);
     chrome.test.assertTrue(isVisible(textbox));
@@ -799,10 +802,18 @@
     textbox.$.textbox.value = testAnnotation.text;
     textbox.$.textbox.dispatchEvent(new CustomEvent('input'));
     await microtasksFinished();
-    // Escape on the textarea focuses the top level box.
-    const whenFocused = eventToPromise('focus', textbox);
+    // Escape on the textarea blurs the textarea to focus the top level box.
+    // This won't actually fire a focus event to the textbox since focus stays
+    // within the box, so we wait for the blur event instead.
+    const whenBlurred = eventToPromise('blur', textbox.$.textbox);
     keyDownOn(textbox.$.textbox, 0, [], 'Escape');
-    await whenFocused;
+    await whenBlurred;
+    // Textbox is still visible, because this event does not commit the
+    // annotation.
+    chrome.test.assertFalse(textbox.hidden);
+    chrome.test.assertTrue(isVisible(textbox));
+    chrome.test.assertEq(
+        undefined, mockPlugin.findMessage('finishTextAnnotation'));
 
     // Escape on the textbox commits the annotation and hides the box.
     keyDownOn(textbox, 0, [], 'Escape');
@@ -951,6 +962,7 @@
     // Using manager initialization to get correct coordinates for the zoom
     // level.
     manager.initializeTextAnnotation({x: 20, y: 20});
+    await eventToPromise('textbox-focused-for-test', textbox);
     await microtasksFinished();
     const styles = getComputedStyle(textbox);
     chrome.test.assertEq('20px', styles.getPropertyValue('left'));
diff --git a/chrome/test/data/pdf/test_util.ts b/chrome/test/data/pdf/test_util.ts
index 34e449b..e32bf78 100644
--- a/chrome/test/data/pdf/test_util.ts
+++ b/chrome/test/data/pdf/test_util.ts
@@ -560,9 +560,12 @@
 // Sets up zoomable viewport and a dummy plugin for Ink. This combines the
 // functionality of getZoomableViewport() and setupTestMockPluginForInk(), which
 // are mutually exclusive since they both attempt to call setContent() on the
-// viewport. Returns a reference to the new viewport and plugin.
-export function setupTestViewportAndMockPluginForInk():
-    {viewport: Viewport, mockPlugin: MockPdfPluginElement} {
+// viewport. Returns a reference to the new viewport, plugin and mock window.
+export function setUpInkTestContext(): {
+  viewport: Viewport,
+  mockPlugin: MockPdfPluginElement,
+  mockWindow: MockElement,
+} {
   // Clear the DOM and create dummy content.
   document.body.innerHTML = '';
   const dummyContent = document.createElement('div');
@@ -608,7 +611,7 @@
   // changes. In prod these are piped through the top level pdf-viewer element.
   viewport.setViewportChangedCallback(() => manager.viewportChanged());
 
-  return {viewport, mockPlugin};
+  return {viewport, mockPlugin, mockWindow};
 }
 
 /**
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index 228e598e..b5481d5f7 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -94,6 +94,10 @@
     sources += [ "extensions/extensions_browsertest.cc" ]
   }
 
+  if (enable_extensions) {
+    sources += [ "extensions_zero_state/zero_state_promo_browsertest.cc" ]
+  }
+
   if (enable_webui_tab_strip) {
     sources += [ "tab_strip/tab_strip_browsertest.cc" ]
   }
@@ -595,6 +599,11 @@
     grdp_files += [ "$target_gen_dir/extensions/resources.grdp" ]
   }
 
+  if (enable_extensions) {
+    deps += [ "extensions_zero_state:build_grdp" ]
+    grdp_files += [ "$target_gen_dir/extensions_zero_state/resources.grdp" ]
+  }
+
   if (enable_print_preview && !is_chromeos) {
     deps += [ "print_preview:build_grdp" ]
     grdp_files += [ "$target_gen_dir/print_preview/resources.grdp" ]
diff --git a/chrome/test/data/webui/cr_components/certificate_manager/BUILD.gn b/chrome/test/data/webui/cr_components/certificate_manager/BUILD.gn
index 7f6a077..abfc1fb 100644
--- a/chrome/test/data/webui/cr_components/certificate_manager/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/certificate_manager/BUILD.gn
@@ -7,32 +7,25 @@
 import("//crypto/features.gni")
 
 assert(!is_android && !is_ios)
-assert(use_nss_certs || chrome_root_store_cert_management_ui)
+assert(chrome_root_store_cert_management_ui)
 
 build_webui_tests("build") {
-  files = []
+  files = [
+    "certificate_entry_v2_test.ts",
+    "certificate_list_v2_test.ts",
+    "certificate_manager_v2_focus_test.ts",
+    "certificate_manager_v2_test.ts",
+    "certificate_manager_v2_test_support.ts",
+    "certificate_password_dialog_test.ts",
+    "certificate_subpage_v2_test.ts",
+    "local_certs_section_v2_test.ts",
+    "navigation_v2_test.ts",
+  ]
 
-  if (use_nss_certs) {
-    files += [ "certificate_manager_test.ts" ]
-    if (is_chromeos) {
-      files += [
-        "certificate_manager_provisioning_test.ts",
-        "test_certificate_provisioning_browser_proxy.ts",
-      ]
-    }
-  }
-
-  if (chrome_root_store_cert_management_ui) {
+  if (is_chromeos) {
     files += [
-      "certificate_entry_v2_test.ts",
-      "certificate_list_v2_test.ts",
-      "certificate_manager_v2_focus_test.ts",
-      "certificate_manager_v2_test.ts",
-      "certificate_manager_v2_test_support.ts",
-      "certificate_password_dialog_test.ts",
-      "certificate_subpage_v2_test.ts",
-      "local_certs_section_v2_test.ts",
-      "navigation_v2_test.ts",
+      "certificate_manager_provisioning_test.ts",
+      "test_certificate_provisioning_browser_proxy.ts",
     ]
   }
 
@@ -44,12 +37,8 @@
     "//ui/webui/resources/mojo:build_ts",
   ]
 
-  ts_path_mappings = [
-    "chrome://settings/strings.m.js|" +
+  ts_path_mappings =
+      [ "chrome://certificate-manager/strings.m.js|" +
         rebase_path("//tools/typescript/definitions/strings.d.ts",
-                    target_gen_dir),
-    "chrome://certificate-manager/strings.m.js|" +
-        rebase_path("//tools/typescript/definitions/strings.d.ts",
-                    target_gen_dir),
-  ]
+                    target_gen_dir) ]
 }
diff --git a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_browsertest.cc b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_browsertest.cc
index d1afcd7..435a217e 100644
--- a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_browsertest.cc
+++ b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_browsertest.cc
@@ -10,40 +10,22 @@
 #include "content/public/test/browser_test.h"
 #include "crypto/crypto_buildflags.h"
 
-typedef WebUIMochaBrowserTest CrComponentsTest;
+class CrComponentsCertManagerV2Test : public WebUIMochaBrowserTest {
+ protected:
+  CrComponentsCertManagerV2Test() {
+    set_test_loader_host(chrome::kChromeUICertificateManagerHost);
+  }
+};
 
-#if BUILDFLAG(USE_NSS_CERTS)
-IN_PROC_BROWSER_TEST_F(CrComponentsTest, CertificateManager) {
-  // Loaded from a settings URL so that localized strings are present.
-  set_test_loader_host(chrome::kChromeUISettingsHost);
-  RunTest("cr_components/certificate_manager/certificate_manager_test.js",
-          "mocha.run()");
-}
-#endif  // BUILDFLAG(USE_NSS_CERTS)
-
-#if BUILDFLAG(USE_NSS_CERTS) && BUILDFLAG(IS_CHROMEOS)
-IN_PROC_BROWSER_TEST_F(CrComponentsTest, CertificateManagerProvisioning) {
-  // Loaded from a settings URL so that localized strings are present.
-  set_test_loader_host(chrome::kChromeUISettingsHost);
+#if BUILDFLAG(IS_CHROMEOS)
+IN_PROC_BROWSER_TEST_F(CrComponentsCertManagerV2Test,
+                       CertificateManagerProvisioning) {
   RunTest(
       "cr_components/certificate_manager/"
       "certificate_manager_provisioning_test.js",
       "mocha.run()");
 }
-#endif  // BUILDFLAG(USE_NSS_CERTS) && BUILDFLAG(IS_CHROMEOS)
-
-#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
-class CrComponentsCertManagerV2Test : public WebUIMochaBrowserTest {
- protected:
-  CrComponentsCertManagerV2Test() {
-    scoped_feature_list_.InitAndEnableFeature(
-        features::kEnableCertManagementUIV2);
-    set_test_loader_host(chrome::kChromeUICertificateManagerHost);
-  }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
-};
+#endif  // BUILDFLAG(IS_CHROMEOS)
 
 IN_PROC_BROWSER_TEST_F(CrComponentsCertManagerV2Test, CertificateManagerV2) {
   RunTest("cr_components/certificate_manager/certificate_manager_v2_test.js",
@@ -82,4 +64,3 @@
           "mocha.run()");
 }
 
-#endif  // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
diff --git a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_interactive_test.cc b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_interactive_test.cc
index d2899221..51abc8a 100644
--- a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_interactive_test.cc
+++ b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_component_interactive_test.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/common/buildflags.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/test/base/web_ui_mocha_browser_test.h"
@@ -10,17 +9,11 @@
 
 typedef WebUIMochaFocusTest CrComponentsFocusTest;
 
-#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
 class CrComponentsCertManagerV2FocusTest : public WebUIMochaBrowserTest {
  protected:
   CrComponentsCertManagerV2FocusTest() {
-    scoped_feature_list_.InitAndEnableFeature(
-        features::kEnableCertManagementUIV2);
     set_test_loader_host(chrome::kChromeUICertificateManagerHost);
   }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
 };
 IN_PROC_BROWSER_TEST_F(CrComponentsCertManagerV2FocusTest,
                        CertificateManagerV2) {
@@ -28,4 +21,3 @@
       "cr_components/certificate_manager/certificate_manager_v2_focus_test.js",
       "mocha.run()");
 }
-#endif  // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
diff --git a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_provisioning_test.ts b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_provisioning_test.ts
index 58de83d3d..160f785 100644
--- a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_provisioning_test.ts
+++ b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_provisioning_test.ts
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'chrome://settings/strings.m.js';
+import 'chrome://certificate-manager/strings.m.js';
 import 'chrome://resources/cr_components/certificate_manager/certificate_provisioning_list.js';
 import 'chrome://resources/cr_components/certificate_manager/certificate_provisioning_entry.js';
 
diff --git a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_test.ts b/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_test.ts
deleted file mode 100644
index c7b281b..0000000
--- a/chrome/test/data/webui/cr_components/certificate_manager/certificate_manager_test.ts
+++ /dev/null
@@ -1,939 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// These test suites test the certificate-manager shared component in the
-// context of the Settings privacy page. This simplifies the test setup and
-// provides better context for testing.
-
-// clang-format off
-import 'chrome://settings/strings.m.js';
-import 'chrome://resources/cr_components/certificate_manager/ca_trust_edit_dialog.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_password_encryption_dialog.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_list.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_password_decryption_dialog.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_manager.js';
-import 'chrome://resources/cr_components/certificate_manager/certificate_subentry.js';
-
-import type {CrInputElement} from 'chrome://resources/cr_elements/cr_input/cr_input.js';
-import type {CaTrustEditDialogElement} from 'chrome://resources/cr_components/certificate_manager/ca_trust_edit_dialog.js';
-import type {CertificateDeleteConfirmationDialogElement} from 'chrome://resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.js';
-import type {CertificateListElement} from 'chrome://resources/cr_components/certificate_manager/certificate_list.js';
-import type {CertificateManagerElement} from 'chrome://resources/cr_components/certificate_manager/certificate_manager.js';
-import type { CertificateActionEventDetail} from 'chrome://resources/cr_components/certificate_manager/certificate_manager_types.js';
-import {CertificateAction, CertificateActionEvent} from 'chrome://resources/cr_components/certificate_manager/certificate_manager_types.js';
-import type {CertificatePasswordDecryptionDialogElement} from 'chrome://resources/cr_components/certificate_manager/certificate_password_decryption_dialog.js';
-import type {CertificatePasswordEncryptionDialogElement} from 'chrome://resources/cr_components/certificate_manager/certificate_password_encryption_dialog.js';
-import type {CertificateSubentryElement} from 'chrome://resources/cr_components/certificate_manager/certificate_subentry.js';
-import type {CaTrustInfo, CertificatesBrowserProxy, CertificatesError, CertificatesOrgGroup, CertificateSubnode} from 'chrome://resources/cr_components/certificate_manager/certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl, CertificateType} from 'chrome://resources/cr_components/certificate_manager/certificates_browser_proxy.js';
-// <if expr="is_chromeos">
-import {CertificateProvisioningBrowserProxyImpl} from 'chrome://resources/cr_components/certificate_manager/certificate_provisioning_browser_proxy.js';
-// </if>
-import {webUIListenerCallback} from 'chrome://resources/js/cr.js';
-import {keyEventOn} from 'chrome://webui-test/keyboard_mock_interactions.js';
-import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {assertEquals, assertFalse, assertNotEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
-import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
-import {eventToPromise} from 'chrome://webui-test/test_util.js';
-
-// <if expr="is_chromeos">
-import {TestCertificateProvisioningBrowserProxy} from './test_certificate_provisioning_browser_proxy.js';
-// </if>
-
-// clang-format on
-
-/**
- * A test version of CertificatesBrowserProxy. Provides helper methods
- * for allowing tests to know when a method was called, as well as
- * specifying mock responses.
- */
-class TestCertificatesBrowserProxy extends TestBrowserProxy implements
-    CertificatesBrowserProxy {
-  private caTrustInfo_: CaTrustInfo;
-  private certificatesError_: CertificatesError|null = null;
-
-  constructor() {
-    super([
-      'deleteCertificate',
-      'editCaCertificateTrust',
-      'exportCertificate',
-      'exportPersonalCertificate',
-      'exportPersonalCertificatePasswordSelected',
-      'getCaCertificateTrust',
-      'importCaCertificate',
-      'importCaCertificateTrustSelected',
-      'importPersonalCertificate',
-      'importPersonalCertificatePasswordSelected',
-      'importServerCertificate',
-      'refreshCertificates',
-      'viewCertificate',
-    ]);
-
-    this.caTrustInfo_ = {ssl: true, email: true, objSign: true};
-  }
-
-  setCaCertificateTrust(caTrustInfo: CaTrustInfo) {
-    this.caTrustInfo_ = caTrustInfo;
-  }
-
-  getCaCertificateTrust(id: string) {
-    this.methodCalled('getCaCertificateTrust', id);
-    return Promise.resolve(this.caTrustInfo_);
-  }
-
-  importServerCertificate() {
-    this.methodCalled('importServerCertificate');
-    return Promise.resolve();
-  }
-
-  importCaCertificate() {
-    this.methodCalled('importCaCertificate');
-    return Promise.resolve('dummyName');
-  }
-
-  importCaCertificateTrustSelected(
-      ssl: boolean, email: boolean, objSign: boolean) {
-    this.methodCalled(
-        'importCaCertificateTrustSelected',
-        {ssl: ssl, email: email, objSign: objSign});
-    return this.fulfillRequest_();
-  }
-
-  editCaCertificateTrust(
-      id: string, ssl: boolean, email: boolean, objSign: boolean) {
-    this.methodCalled('editCaCertificateTrust', {id, ssl, email, objSign});
-    return this.fulfillRequest_();
-  }
-
-  /**
-   * Forces some of the browser proxy methods to start returning errors.
-   */
-  forceCertificatesError() {
-    this.certificatesError_ = {
-      title: 'DummyError',
-      description: 'DummyDescription',
-    };
-  }
-
-  /**
-   * @return A promise that is resolved or rejected based on the
-   *     value of |certificatesError_|.
-   */
-  private fulfillRequest_(): Promise<void> {
-    return this.certificatesError_ === null ?
-        Promise.resolve() :
-        Promise.reject(this.certificatesError_);
-  }
-
-  deleteCertificate(id: string) {
-    this.methodCalled('deleteCertificate', id);
-    return this.fulfillRequest_();
-  }
-
-  exportPersonalCertificatePasswordSelected(password: string) {
-    this.methodCalled('exportPersonalCertificatePasswordSelected', password);
-    return this.fulfillRequest_();
-  }
-
-  importPersonalCertificate(useHardwareBacked: boolean) {
-    this.methodCalled('importPersonalCertificate', useHardwareBacked);
-    return Promise.resolve(true);
-  }
-
-  importPersonalCertificatePasswordSelected(password: string) {
-    this.methodCalled('importPersonalCertificatePasswordSelected', password);
-    return this.fulfillRequest_();
-  }
-
-  refreshCertificates() {
-    this.methodCalled('refreshCertificates');
-  }
-
-  viewCertificate(id: string) {
-    this.methodCalled('viewCertificate', id);
-  }
-
-  exportCertificate(id: string) {
-    this.methodCalled('exportCertificate', id);
-  }
-
-  exportPersonalCertificate(id: string) {
-    this.methodCalled('exportPersonalCertificate', id);
-    return Promise.resolve();
-  }
-
-  cancelImportExportCertificate() {}
-}
-
-function createSampleCertificateOrgGroup(): CertificatesOrgGroup {
-  return {
-    id: 'dummyCertificateId',
-    name: 'dummyCertificateName',
-    containsPolicyCerts: false,
-    subnodes: [createSampleCertificateSubnode()],
-  };
-}
-
-function createSampleCertificateSubnode(): CertificateSubnode {
-  return {
-    extractable: false,
-    id: 'dummySubnodeId',
-    name: 'dummySubnodeName',
-    policy: false,
-    canBeDeleted: true,
-    canBeEdited: true,
-    untrusted: false,
-    webTrustAnchor: false,
-  };
-}
-
-/**
- * Triggers an 'input' event on the given text input field (which triggers
- * validation to occur for password fields being tested in this file).
- */
-async function triggerInputEvent(element: CrInputElement) {
-  await element.updateComplete;
-  // The actual key code is irrelevant for tests.
-  const kSpaceBar = 32;
-  keyEventOn(element, 'input', kSpaceBar);
-  await element.updateComplete;
-}
-
-suite('CaTrustEditDialogTests', function() {
-  let dialog: CaTrustEditDialogElement;
-
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  const caTrustInfo: CaTrustInfo = {ssl: true, email: false, objSign: false};
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    browserProxy.setCaCertificateTrust(caTrustInfo);
-
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    dialog = document.createElement('ca-trust-edit-dialog');
-  });
-
-  teardown(function() {
-    dialog.remove();
-  });
-
-  test('EditSuccess', async function() {
-    dialog.model = createSampleCertificateSubnode();
-    document.body.appendChild(dialog);
-
-    const id = await browserProxy.whenCalled('getCaCertificateTrust');
-
-    assertEquals((dialog.model as CertificateSubnode).id, id);
-    assertEquals(caTrustInfo.ssl, dialog.$.ssl.checked);
-    assertEquals(caTrustInfo.email, dialog.$.email.checked);
-    assertEquals(caTrustInfo.objSign, dialog.$.objSign.checked);
-
-    // Simulate toggling all checkboxes.
-    dialog.$.ssl.click();
-    dialog.$.email.click();
-    dialog.$.objSign.click();
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-
-    const {id: model_id, ssl, email, objSign} =
-        await browserProxy.whenCalled('editCaCertificateTrust');
-
-    assertEquals((dialog.model as CertificateSubnode).id, model_id);
-    // Checking that the values sent to C++ are reflecting the
-    // changes made by the user (toggling all checkboxes).
-    assertEquals(caTrustInfo.ssl, !ssl);
-    assertEquals(caTrustInfo.email, !email);
-    assertEquals(caTrustInfo.objSign, !objSign);
-    // Check that the dialog is closed.
-    assertFalse(dialog.$.dialog.open);
-  });
-
-  test('ImportSuccess', async function() {
-    dialog.model = {name: 'Dummy certificate name'};
-    document.body.appendChild(dialog);
-
-    assertFalse(dialog.$.ssl.checked);
-    assertFalse(dialog.$.email.checked);
-    assertFalse(dialog.$.objSign.checked);
-
-    dialog.$.ssl.click();
-    dialog.$.email.click();
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-    const {ssl, email, objSign} =
-        await browserProxy.whenCalled('importCaCertificateTrustSelected');
-
-    assertTrue(ssl);
-    assertTrue(email);
-    assertFalse(objSign);
-  });
-
-  test('EditError', async function() {
-    dialog.model = createSampleCertificateSubnode();
-    document.body.appendChild(dialog);
-    browserProxy.forceCertificatesError();
-
-    const whenErrorEventFired = eventToPromise('certificates-error', dialog);
-
-    await browserProxy.whenCalled('getCaCertificateTrust');
-
-    dialog.$.ok.click();
-    await browserProxy.whenCalled('editCaCertificateTrust');
-
-    await whenErrorEventFired;
-  });
-});
-
-suite('CertificateDeleteConfirmationDialogTests', function() {
-  let dialog: CertificateDeleteConfirmationDialogElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  const model = createSampleCertificateSubnode();
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    dialog = document.createElement('certificate-delete-confirmation-dialog');
-    dialog.model = model;
-    dialog.certificateType = CertificateType.PERSONAL;
-    document.body.appendChild(dialog);
-  });
-
-  teardown(function() {
-    dialog.remove();
-  });
-
-  test('DeleteSuccess', async function() {
-    assertTrue(dialog.$.dialog.open);
-    // Check that the dialog title includes the certificate name.
-    const titleEl = dialog.$.dialog.querySelector('[slot=title]');
-    assertTrue(!!titleEl);
-    assertTrue(titleEl.textContent!.includes(model.name));
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-
-    const id = await browserProxy.whenCalled('deleteCertificate');
-    assertEquals(model.id, id);
-    // Check that the dialog is closed.
-    assertFalse(dialog.$.dialog.open);
-  });
-
-  test('DeleteError', async function() {
-    browserProxy.forceCertificatesError();
-    const whenErrorEventFired = eventToPromise('certificates-error', dialog);
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-    const id = await browserProxy.whenCalled('deleteCertificate');
-    assertEquals(model.id, id);
-    // Ensure that the 'error' event was fired.
-    await whenErrorEventFired;
-  });
-});
-
-suite('CertificatePasswordEncryptionDialogTests', function() {
-  let dialog: CertificatePasswordEncryptionDialogElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  const methodName = 'exportPersonalCertificatePasswordSelected';
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    dialog = document.createElement('certificate-password-encryption-dialog');
-    document.body.appendChild(dialog);
-  });
-
-  teardown(function() {
-    dialog.remove();
-  });
-
-  test('EncryptSuccess', async function() {
-    const passwordInputElements = dialog.$.dialog.querySelectorAll('cr-input');
-    const passwordInputElement = passwordInputElements[0];
-    assertTrue(!!passwordInputElement);
-    const confirmPasswordInputElement = passwordInputElements[1];
-    assertTrue(!!confirmPasswordInputElement);
-
-    assertTrue(dialog.$.dialog.open);
-    assertTrue(dialog.$.ok.disabled);
-
-    // Test that the 'OK' button is disabled when the password fields are
-    // empty (even though they both have the same value).
-    await triggerInputEvent(passwordInputElement);
-    assertTrue(dialog.$.ok.disabled);
-
-    // Test that the 'OK' button is disabled until the two password fields
-    // match.
-    passwordInputElement.value = 'foopassword';
-    await triggerInputEvent(passwordInputElement);
-    assertTrue(dialog.$.ok.disabled);
-    confirmPasswordInputElement.value = passwordInputElement.value;
-    await triggerInputEvent(confirmPasswordInputElement);
-    assertFalse(dialog.$.ok.disabled);
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-
-    const password = await browserProxy.whenCalled(methodName);
-    assertEquals(passwordInputElement.value, password);
-    // Check that the dialog is closed.
-    assertFalse(dialog.$.dialog.open);
-  });
-
-  test('EncryptError', async function() {
-    browserProxy.forceCertificatesError();
-
-    const passwordInputElements = dialog.$.dialog.querySelectorAll('cr-input');
-    const passwordInputElement = passwordInputElements[0];
-    assertTrue(!!passwordInputElement);
-    const confirmPasswordInputElement = passwordInputElements[1];
-    assertTrue(!!confirmPasswordInputElement);
-
-    passwordInputElement.value = 'foopassword';
-    confirmPasswordInputElement.value = passwordInputElement.value;
-    await triggerInputEvent(passwordInputElement);
-
-    const whenErrorEventFired = eventToPromise('certificates-error', dialog);
-    dialog.$.ok.click();
-
-    await browserProxy.whenCalled(methodName);
-    await whenErrorEventFired;
-  });
-});
-
-suite('CertificatePasswordDecryptionDialogTests', function() {
-  let dialog: CertificatePasswordDecryptionDialogElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  const methodName = 'importPersonalCertificatePasswordSelected';
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    dialog = document.createElement('certificate-password-decryption-dialog');
-    document.body.appendChild(dialog);
-  });
-
-  teardown(function() {
-    dialog.remove();
-  });
-
-  test('DecryptSuccess', async function() {
-    const passwordInputElement = dialog.$.dialog.querySelector('cr-input');
-    assertTrue(!!passwordInputElement);
-    assertTrue(dialog.$.dialog.open);
-
-    // Test that the 'OK' button is enabled even when the password field is
-    // empty.
-    assertEquals('', passwordInputElement.value);
-    assertFalse(dialog.$.ok.disabled);
-
-    passwordInputElement.value = 'foopassword';
-    await passwordInputElement.updateComplete;
-    assertFalse(dialog.$.ok.disabled);
-
-    // Simulate clicking 'OK'.
-    dialog.$.ok.click();
-
-    const password = await browserProxy.whenCalled(methodName);
-    assertEquals(passwordInputElement.value, password);
-    // Check that the dialog is closed.
-    assertFalse(dialog.$.dialog.open);
-  });
-
-  test('DecryptError', async function() {
-    browserProxy.forceCertificatesError();
-    // Simulate entering some password.
-    const passwordInputElement = dialog.$.dialog.querySelector('cr-input');
-    assertTrue(!!passwordInputElement);
-    passwordInputElement.value = 'foopassword';
-    await triggerInputEvent(passwordInputElement);
-
-    const whenErrorEventFired = eventToPromise('certificates-error', dialog);
-    dialog.$.ok.click();
-    await browserProxy.whenCalled(methodName);
-    await whenErrorEventFired;
-  });
-});
-
-suite('CertificateSubentryTests', function() {
-  let subentry: CertificateSubentryElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  /**
-   * @return A promise firing once |CertificateActionEvent| fires.
-   */
-  function actionEventToPromise():
-      Promise<CustomEvent<CertificateActionEventDetail>> {
-    return eventToPromise(CertificateActionEvent, subentry);
-  }
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    subentry = document.createElement('certificate-subentry');
-    subentry.model = createSampleCertificateSubnode();
-    subentry.certificateType = CertificateType.PERSONAL;
-    document.body.appendChild(subentry);
-
-    // Bring up the popup menu for the following tests to use.
-    subentry.$.dots.click();
-    flush();
-  });
-
-  teardown(function() {
-    subentry.remove();
-  });
-
-  // Test case where 'View' option is tapped.
-  test('MenuOptions_View', async function() {
-    const viewButton = subentry.shadowRoot!.querySelector<HTMLElement>('#view');
-    assertTrue(!!viewButton);
-    viewButton.click();
-    const id = await browserProxy.whenCalled('viewCertificate');
-    assertEquals(subentry.model.id, id);
-  });
-
-  // Test that the 'Edit' option is only shown when appropriate and that
-  // once tapped the correct event is fired.
-  test('MenuOptions_Edit', function() {
-    const editButton = subentry.shadowRoot!.querySelector<HTMLElement>('#edit');
-    assertTrue(!!editButton);
-
-    let model = createSampleCertificateSubnode();
-    model.canBeEdited = false;
-    subentry.model = model;
-    assertTrue(editButton.hidden);
-
-    model = createSampleCertificateSubnode();
-    model.canBeEdited = true;
-    subentry.model = model;
-    assertFalse(editButton.hidden);
-
-    subentry.model = createSampleCertificateSubnode();
-    const waitForActionEvent = actionEventToPromise();
-    editButton.click();
-    return waitForActionEvent.then(function(event) {
-      const detail = event.detail;
-      assertEquals(CertificateAction.EDIT, detail.action);
-      assertEquals(
-          subentry.model.id, (detail.subnode as CertificateSubnode).id);
-      assertEquals(subentry.certificateType, detail.certificateType);
-    });
-  });
-
-  // Test that the 'Delete' option is only shown when appropriate and that
-  // once tapped the correct event is fired.
-  test('MenuOptions_Delete', function() {
-    const deleteButton =
-        subentry.shadowRoot!.querySelector<HTMLElement>('#delete');
-    assertTrue(!!deleteButton);
-
-    // Should be disabled when 'model.canBeDeleted' is false.
-    const model = createSampleCertificateSubnode();
-    model.canBeDeleted = false;
-    subentry.model = model;
-    assertTrue(deleteButton.hidden);
-
-    subentry.model = createSampleCertificateSubnode();
-    const waitForActionEvent = actionEventToPromise();
-    deleteButton.click();
-    return waitForActionEvent.then(function(event) {
-      const detail = event.detail;
-      assertEquals(CertificateAction.DELETE, detail.action);
-      assertEquals(
-          subentry.model.id, (detail.subnode as CertificateSubnode).id);
-    });
-  });
-
-  // Test that the 'Export' option is always shown when the certificate type
-  // is not PERSONAL and that once tapped the correct event is fired.
-  test('MenuOptions_Export', async function() {
-    subentry.certificateType = CertificateType.SERVER;
-    const exportButton =
-        subentry.shadowRoot!.querySelector<HTMLElement>('#export');
-    assertTrue(!!exportButton);
-    assertFalse(exportButton.hidden);
-    exportButton.click();
-    const id = await browserProxy.whenCalled('exportCertificate');
-    assertEquals(subentry.model.id, id);
-  });
-
-  // Test case of exporting a PERSONAL certificate.
-  test('MenuOptions_ExportPersonal', async function() {
-    const exportButton =
-        subentry.shadowRoot!.querySelector<HTMLElement>('#export');
-    assertTrue(!!exportButton);
-
-    // Should be disabled when 'model.extractable' is false.
-    assertTrue(exportButton.hidden);
-
-    const model = createSampleCertificateSubnode();
-    model.extractable = true;
-    subentry.model = model;
-    assertFalse(exportButton.hidden);
-
-    const waitForActionEvent = actionEventToPromise();
-    exportButton.click();
-    const id = await browserProxy.whenCalled('exportPersonalCertificate');
-
-    assertEquals(subentry.model.id, id);
-
-    // A promise firing once |CertificateActionEvent| is fired.
-    const event = await waitForActionEvent;
-
-    const detail = event.detail;
-    assertEquals(CertificateAction.EXPORT_PERSONAL, detail.action);
-    assertEquals(subentry.model.id, (detail.subnode as CertificateSubnode).id);
-  });
-});
-
-suite('CertificateManagerTests', function() {
-  let page: CertificateManagerElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  enum CertificateCategoryIndex {
-    PERSONAL = 0,
-    SERVER = 1,
-    CA = 2,
-    OTHER = 3,
-  }
-
-  setup(function() {
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    // <if expr="is_chromeos">
-    const provisioningBrowserProxy =
-        new TestCertificateProvisioningBrowserProxy();
-    CertificateProvisioningBrowserProxyImpl.setInstance(
-        provisioningBrowserProxy);
-    // </if>
-    page = document.createElement('certificate-manager');
-    document.body.appendChild(page);
-  });
-
-  teardown(function() {
-    page.remove();
-  });
-
-  /**
-   * Test that the page requests information from the browser on startup and
-   * that it gets populated accordingly.
-   */
-  test('Initialization', async function() {
-    // Trigger all category tabs to be added to the DOM.
-    const crTabsElement = page.shadowRoot!.querySelector('cr-tabs');
-    assertTrue(!!crTabsElement);
-    crTabsElement.selected = CertificateCategoryIndex.PERSONAL;
-    await crTabsElement.updateComplete;
-    crTabsElement.selected = CertificateCategoryIndex.SERVER;
-    await crTabsElement.updateComplete;
-    crTabsElement.selected = CertificateCategoryIndex.CA;
-    await crTabsElement.updateComplete;
-    crTabsElement.selected = CertificateCategoryIndex.OTHER;
-    await crTabsElement.updateComplete;
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-    assertEquals(4, certificateLists.length);
-
-    async function assertCertificateListLength(
-        listIndex: CertificateCategoryIndex, expectedSize: number) {
-      // Need to switch to the corresponding tab before querying the DOM.
-      assertTrue(!!crTabsElement);
-      crTabsElement.selected = listIndex;
-      await crTabsElement.updateComplete;
-      const certificateEntries =
-          certificateLists[listIndex]!.shadowRoot!.querySelectorAll(
-              'certificate-entry');
-      assertEquals(expectedSize, certificateEntries.length);
-    }
-
-    await assertCertificateListLength(CertificateCategoryIndex.PERSONAL, 0);
-    await assertCertificateListLength(CertificateCategoryIndex.SERVER, 0);
-    await assertCertificateListLength(CertificateCategoryIndex.CA, 0);
-    await assertCertificateListLength(CertificateCategoryIndex.OTHER, 0);
-
-    await browserProxy.whenCalled('refreshCertificates');
-    // Simulate response for personal and CA certificates.
-    webUIListenerCallback(
-        'certificates-changed', 'personalCerts',
-        [createSampleCertificateOrgGroup()]);
-    webUIListenerCallback(
-        'certificates-changed', 'caCerts',
-        [createSampleCertificateOrgGroup(), createSampleCertificateOrgGroup()]);
-    flush();
-
-    assertCertificateListLength(CertificateCategoryIndex.PERSONAL, 1);
-    assertCertificateListLength(CertificateCategoryIndex.SERVER, 0);
-    assertCertificateListLength(CertificateCategoryIndex.CA, 2);
-    assertCertificateListLength(CertificateCategoryIndex.OTHER, 0);
-  });
-
-  /**
-   * Tests that a dialog opens as a response to a CertificateActionEvent.
-   * @param dialogTagName The type of dialog to test.
-   */
-  function testDialogOpensOnAction(
-      dialogTagName: string,
-      eventDetail: CertificateActionEventDetail): Promise<void> {
-    assertFalse(!!page.shadowRoot!.querySelector(dialogTagName));
-    const whenDialogOpen = eventToPromise('cr-dialog-open', page);
-    page.dispatchEvent(new CustomEvent(
-        CertificateActionEvent,
-        {bubbles: true, composed: true, detail: eventDetail}));
-
-    // Some dialogs are opened after some async operation to fetch initial
-    // data. Ensure that the underlying cr-dialog is actually opened before
-    // returning.
-    return whenDialogOpen.then(() => {
-      assertTrue(!!page.shadowRoot!.querySelector(dialogTagName));
-    });
-  }
-
-  test('OpensDialog_DeleteConfirmation', function() {
-    return testDialogOpensOnAction('certificate-delete-confirmation-dialog', {
-      action: CertificateAction.DELETE,
-      subnode: createSampleCertificateSubnode(),
-      certificateType: CertificateType.PERSONAL,
-      anchor: page,
-    });
-  });
-
-  test('OpensDialog_PasswordEncryption', function() {
-    return testDialogOpensOnAction('certificate-password-encryption-dialog', {
-      action: CertificateAction.EXPORT_PERSONAL,
-      subnode: createSampleCertificateSubnode(),
-      certificateType: CertificateType.PERSONAL,
-      anchor: page,
-    });
-  });
-
-  test('OpensDialog_PasswordDecryption', function() {
-    return testDialogOpensOnAction('certificate-password-decryption-dialog', {
-      action: CertificateAction.IMPORT,
-      subnode: createSampleCertificateSubnode(),
-      certificateType: CertificateType.PERSONAL,
-      anchor: page,
-    });
-  });
-
-  test('OpensDialog_CaTrustEdit', function() {
-    return testDialogOpensOnAction('ca-trust-edit-dialog', {
-      action: CertificateAction.EDIT,
-      subnode: createSampleCertificateSubnode(),
-      certificateType: CertificateType.CA,
-      anchor: page,
-    });
-  });
-
-  test('OpensDialog_CaTrustImport', function() {
-    return testDialogOpensOnAction('ca-trust-edit-dialog', {
-      action: CertificateAction.IMPORT,
-      subnode: {name: 'Dummy Certificate Name', id: ''},
-      certificateType: CertificateType.CA,
-      anchor: page,
-    });
-  });
-
-  // <if expr="is_chromeos">
-
-  async function renderTabContents() {
-    const crTabs = page.shadowRoot!.querySelector('cr-tabs');
-    assertTrue(!!crTabs);
-    crTabs.selected = CertificateCategoryIndex.PERSONAL;
-    await crTabs.updateComplete;
-    crTabs.selected = CertificateCategoryIndex.CA;
-    await crTabs.updateComplete;
-  }
-
-  // Test that import buttons are hidden by default.
-  test('ImportButton_Default', async function() {
-    await renderTabContents();
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-    const clientImportButton = certificateLists[0]!.$.import;
-    assertTrue(clientImportButton.hidden);
-    const clientImportAndBindButton = certificateLists[0]!.$.importAndBind;
-    assertTrue(clientImportAndBindButton.hidden);
-    const caImportButton = certificateLists[1]!.$.import;
-    assertTrue(caImportButton.hidden);
-  });
-
-  // Test that ClientCertificateManagementAllowed policy is applied to the
-  // UI when management is allowed.
-  test('ImportButton_ClientPolicyAllowed', async function() {
-    await renderTabContents();
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-
-    await browserProxy.whenCalled('refreshCertificates');
-    webUIListenerCallback(
-        'client-import-allowed-changed', true /* clientImportAllowed */);
-    // Verify that import buttons are shown in the client certificate
-    // tab.
-    const clientImportButton = certificateLists[0]!.$.import;
-    assertFalse(clientImportButton.hidden);
-    const clientImportAndBindButton = certificateLists[0]!.$.importAndBind;
-    assertFalse(clientImportAndBindButton.hidden);
-    // Verify that import button is still hidden in the CA certificate
-    // tab.
-    const caImportButton = certificateLists[1]!.$.import;
-    assertTrue(caImportButton.hidden);
-  });
-
-  // Test that ClientCertificateManagementAllowed policy is applied to the
-  // UI when management is not allowed.
-  test('ImportButton_ClientPolicyDisallowed', async function() {
-    await renderTabContents();
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-
-    await browserProxy.whenCalled('refreshCertificates');
-    webUIListenerCallback(
-        'client-import-allowed-changed', false /* clientImportAllowed */);
-    // Verify that import buttons are still hidden in the client
-    // certificate tab.
-    const clientImportButton = certificateLists[0]!.$.import;
-    assertTrue(clientImportButton.hidden);
-    const clientImportAndBindButton = certificateLists[0]!.$.importAndBind;
-    assertTrue(clientImportAndBindButton.hidden);
-    // Verify that import button is still hidden in the CA certificate
-    // tab.
-    const caImportButton = certificateLists[1]!.$.import;
-    assertTrue(caImportButton.hidden);
-  });
-
-  // Test that CACertificateManagementAllowed policy is applied to the
-  // UI when management is allowed.
-  test('ImportButton_CAPolicyAllowed', async function() {
-    await renderTabContents();
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-
-    await browserProxy.whenCalled('refreshCertificates');
-    webUIListenerCallback(
-        'ca-import-allowed-changed', true /* clientImportAllowed */);
-    // Verify that import buttons are still hidden in the client
-    // certificate tab.
-    const clientImportButton = certificateLists[0]!.$.import;
-    assertTrue(clientImportButton.hidden);
-    const clientImportAndBindButton = certificateLists[0]!.$.importAndBind;
-    assertTrue(clientImportAndBindButton.hidden);
-    // Verify that import button is shown in the CA certificate tab.
-    const caImportButton = certificateLists[1]!.$.import;
-    assertFalse(caImportButton.hidden);
-  });
-
-  // Test that CACertificateManagementAllowed policy is applied to the
-  // UI when management is not allowed.
-  test('ImportButton_CAPolicyDisallowed', async function() {
-    await renderTabContents();
-    const certificateLists =
-        page.shadowRoot!.querySelectorAll('certificate-list');
-
-    await browserProxy.whenCalled('refreshCertificates');
-    webUIListenerCallback(
-        'ca-import-allowed-changed', false /* clientImportAllowed */);
-    // Verify that import buttons are still hidden in the client
-    // certificate tab.
-    const clientImportButton = certificateLists[0]!.$.import;
-    assertTrue(clientImportButton.hidden);
-    const clientImportAndBindButton = certificateLists[0]!.$.importAndBind;
-    assertTrue(clientImportAndBindButton.hidden);
-    // Verify that import button is still hidden in the CA certificate
-    // tab.
-    const caImportButton = certificateLists[1]!.$.import;
-    assertTrue(caImportButton.hidden);
-  });
-  // </if>
-});
-
-suite('CertificateListTests', function() {
-  let element: CertificateListElement;
-  let browserProxy: TestCertificatesBrowserProxy;
-
-  setup(function() {
-    browserProxy = new TestCertificatesBrowserProxy();
-    CertificatesBrowserProxyImpl.setInstance(browserProxy);
-    document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    element = document.createElement('certificate-list');
-    document.body.appendChild(element);
-  });
-
-  teardown(function() {
-    element.remove();
-  });
-
-  /**
-   * Tests the "Import" button functionality.
-   * @param proxyMethodName The name of the proxy method expected to be
-   *     called.
-   * @param actionEventExpected Whether a CertificateActionEvent is expected
-   *     to fire as a result tapping the Import button.
-   * @param bindBtn Whether to click on the import and bind btn.
-   */
-  async function testImportForCertificateType(
-      certificateType: CertificateType, proxyMethodName: string,
-      actionEventExpected: boolean, bindBtn: boolean) {
-    element.certificateType = certificateType;
-    flush();
-
-    const importButton = bindBtn ?
-        element.shadowRoot!.querySelector<HTMLElement>('#importAndBind') :
-        element.shadowRoot!.querySelector<HTMLElement>('#import');
-    assertTrue(!!importButton);
-
-    const waitForActionEvent = actionEventExpected ?
-        eventToPromise(CertificateActionEvent, element) :
-        Promise.resolve(null);
-
-    importButton.click();
-    const arg = await browserProxy.whenCalled(proxyMethodName);
-
-    if (proxyMethodName === 'importPersonalCertificate') {
-      assertNotEquals(arg, undefined);
-      assertEquals(arg, bindBtn);
-    }
-    const event = await waitForActionEvent;
-
-    if (actionEventExpected) {
-      assertEquals(CertificateAction.IMPORT, event.detail.action);
-      assertEquals(certificateType, event.detail.certificateType);
-    }
-  }
-
-  test('ImportButton_Personal', async function() {
-    await testImportForCertificateType(
-        CertificateType.PERSONAL, 'importPersonalCertificate', true, false);
-  });
-
-  // <if expr="is_chromeos">
-  test('ImportAndBindButton_Personal', async function() {
-    await testImportForCertificateType(
-        CertificateType.PERSONAL, 'importPersonalCertificate', true, true);
-  });
-  // </if>
-
-  test('ImportButton_Server', async function() {
-    await testImportForCertificateType(
-        CertificateType.SERVER, 'importServerCertificate', false, false);
-  });
-
-  test('ImportButton_CA', async function() {
-    await testImportForCertificateType(
-        CertificateType.CA, 'importCaCertificate', true, false);
-  });
-});
diff --git a/chrome/test/data/webui/extensions/extensions_focus_test.cc b/chrome/test/data/webui/extensions/extensions_focus_test.cc
index 3ef00cab..1b9361cb 100644
--- a/chrome/test/data/webui/extensions/extensions_focus_test.cc
+++ b/chrome/test/data/webui/extensions/extensions_focus_test.cc
@@ -25,8 +25,6 @@
           "runMochaTest('ExtensionShortcutTest', 'UpdateShortcut')");
 }
 
-// TODO(crbug.com/392777363): Compile the test on android.
-#if BUILDFLAG(ENABLE_EXTENSIONS)
 class CrExtensionsOptionsPageTest : public ExtensionSettingsTestBase {
  protected:
   void OnWebContentsAvailable(content::WebContents* web_contents) override {
@@ -40,4 +38,3 @@
   InstallExtensionWithInPageOptions();
   RunTest("extensions/extension_options_dialog_test.js", "mocha.run()");
 }
-#endif  // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/test/data/webui/extensions_zero_state/BUILD.gn b/chrome/test/data/webui/extensions_zero_state/BUILD.gn
new file mode 100644
index 0000000..28fde0c
--- /dev/null
+++ b/chrome/test/data/webui/extensions_zero_state/BUILD.gn
@@ -0,0 +1,21 @@
+# Copyright 2025 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//extensions/buildflags/buildflags.gni")
+import("../build_webui_tests.gni")
+
+assert(enable_extensions_core, "enable extensions check failed")
+
+build_webui_tests("build") {
+  files = [ "zero_state_promo_app_test.ts" ]
+
+  ts_path_mappings = [ "chrome://extensions-zero-state/*|" + rebase_path(
+                           "$root_gen_dir/chrome/browser/resources/extensions_zero_state_promo/tsc/*",
+                           target_gen_dir) ]
+
+  ts_deps = [
+    "//chrome/browser/resources/extensions_zero_state_promo:build_ts",
+    "//ui/webui/resources/cr_components/help_bubble:build_ts",
+  ]
+}
diff --git a/chrome/test/data/webui/extensions_zero_state/DIR_METADATA b/chrome/test/data/webui/extensions_zero_state/DIR_METADATA
new file mode 100644
index 0000000..3a31847
--- /dev/null
+++ b/chrome/test/data/webui/extensions_zero_state/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail: {
+  component: "Platform>Extensions"
+}
+team_email: "webstore-consumer@google.com"
+buganizer_public: {
+  component_id: 1456110
+}
diff --git a/chrome/test/data/webui/extensions_zero_state/zero_state_promo_app_test.ts b/chrome/test/data/webui/extensions_zero_state/zero_state_promo_app_test.ts
new file mode 100644
index 0000000..98a6946a
--- /dev/null
+++ b/chrome/test/data/webui/extensions_zero_state/zero_state_promo_app_test.ts
@@ -0,0 +1,120 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+import 'chrome://extensions-zero-state/zero_state_promo_app.js';
+
+import {WebStoreLinkClicked} from 'chrome://extensions-zero-state/zero_state_promo.mojom-webui.js';
+import type {ZeroStatePromoAppElement} from 'chrome://extensions-zero-state/zero_state_promo_app.js';
+import type {ZeroStatePromoBrowserProxy} from 'chrome://extensions-zero-state/zero_state_promo_browser_proxy.js';
+import {ZeroStatePromoBrowserProxyImpl} from 'chrome://extensions-zero-state/zero_state_promo_browser_proxy.js';
+import {CustomHelpBubbleUserAction} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble.mojom-webui.js';
+import type {CustomHelpBubbleHandlerInterface} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble.mojom-webui.js';
+import type {CustomHelpBubbleProxy} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble_proxy.js';
+import {CustomHelpBubbleProxyImpl} from 'chrome://resources/cr_components/help_bubble/custom_help_bubble_proxy.js';
+import {assertEquals} from 'chrome://webui-test/chai_assert.js';
+import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
+
+export class TestBubbleHandler extends TestBrowserProxy implements
+    CustomHelpBubbleHandlerInterface {
+  constructor() {
+    super(['notifyUserAction']);
+  }
+
+  notifyUserAction(action: CustomHelpBubbleUserAction) {
+    this.methodCalled('notifyUserAction', action);
+  }
+}
+
+export class TestBubbleProxy implements CustomHelpBubbleProxy {
+  private handler_: TestBubbleHandler;
+
+  constructor(handler: TestBubbleHandler) {
+    this.handler_ = handler;
+  }
+
+  getHandler(): TestBubbleHandler {
+    return this.handler_;
+  }
+}
+
+export class TestPromoProxy extends TestBrowserProxy implements
+    ZeroStatePromoBrowserProxy {
+  constructor() {
+    super(['launchWebStoreLink']);
+  }
+
+  launchWebStoreLink(link: WebStoreLinkClicked) {
+    this.methodCalled('launchWebStoreLink', link);
+  }
+}
+
+suite('ChipsUiTest', () => {
+  let bubbleHandler: TestBubbleHandler;
+  let zeroStatePromoApp: ZeroStatePromoAppElement;
+  let promoProxy: TestPromoProxy;
+
+  setup(() => {
+    bubbleHandler = new TestBubbleHandler();
+    CustomHelpBubbleProxyImpl.setInstance(new TestBubbleProxy(bubbleHandler));
+
+    promoProxy = new TestPromoProxy();
+    ZeroStatePromoBrowserProxyImpl.setInstance(promoProxy);
+
+    document.body.innerHTML = window.trustedTypes!.emptyHTML;
+    zeroStatePromoApp =
+        document.createElement('extensions-zero-state-promo-app');
+    document.body.appendChild(zeroStatePromoApp);
+  });
+
+  test('ClickCouponsChip', async () => {
+    zeroStatePromoApp.$.couponsButton.click();
+
+    assertEquals(
+        WebStoreLinkClicked.kCoupon,
+        await promoProxy.whenCalled('launchWebStoreLink'));
+    assertEquals(
+        CustomHelpBubbleUserAction.kAction,
+        await bubbleHandler.whenCalled('notifyUserAction'));
+  });
+
+  test('ClickWritingChip', async () => {
+    zeroStatePromoApp.$.writingButton.click();
+
+    assertEquals(
+        WebStoreLinkClicked.kWriting,
+        await promoProxy.whenCalled('launchWebStoreLink'));
+    assertEquals(
+        CustomHelpBubbleUserAction.kAction,
+        await bubbleHandler.whenCalled('notifyUserAction'));
+  });
+
+  test('ClickProductivityChip', async () => {
+    zeroStatePromoApp.$.productivityButton.click();
+
+    assertEquals(
+        WebStoreLinkClicked.kProductivity,
+        await promoProxy.whenCalled('launchWebStoreLink'));
+    assertEquals(
+        CustomHelpBubbleUserAction.kAction,
+        await bubbleHandler.whenCalled('notifyUserAction'));
+  });
+
+  test('ClickAiChip', async () => {
+    zeroStatePromoApp.$.aiButton.click();
+
+    assertEquals(
+        WebStoreLinkClicked.kAi,
+        await promoProxy.whenCalled('launchWebStoreLink'));
+    assertEquals(
+        CustomHelpBubbleUserAction.kAction,
+        await bubbleHandler.whenCalled('notifyUserAction'));
+  });
+
+  test('ClickDismissButton', async () => {
+    zeroStatePromoApp.$.dismissButton.click();
+
+    assertEquals(
+        CustomHelpBubbleUserAction.kDismiss,
+        await bubbleHandler.whenCalled('notifyUserAction'));
+  });
+});
diff --git a/chrome/test/data/webui/extensions_zero_state/zero_state_promo_browsertest.cc b/chrome/test/data/webui/extensions_zero_state/zero_state_promo_browsertest.cc
new file mode 100644
index 0000000..9efd0810
--- /dev/null
+++ b/chrome/test/data/webui/extensions_zero_state/zero_state_promo_browsertest.cc
@@ -0,0 +1,36 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/test/base/web_ui_mocha_browser_test.h"
+#include "components/feature_engagement/public/feature_constants.h"
+#include "components/feature_engagement/public/feature_list.h"
+#include "content/public/test/browser_test.h"
+
+class ZeroStatePromoBrowserTest : public WebUIMochaBrowserTest {
+ protected:
+  ZeroStatePromoBrowserTest() {
+    set_test_loader_host(chrome::kChromeUIExtensionsZeroStatePromoHost);
+  }
+};
+
+class ZeroStatePromoChipsUiTest : public ZeroStatePromoBrowserTest {
+ protected:
+  ZeroStatePromoChipsUiTest() {
+    feature_list_.InitAndEnableFeatureWithParameters(
+        feature_engagement::kIPHExtensionsZeroStatePromoFeature,
+        {{feature_engagement::kIPHExtensionsZeroStatePromoVariantParam.name,
+          feature_engagement::kIPHExtensionsZeroStatePromoVariantParam.GetName(
+              feature_engagement::IPHExtensionsZeroStatePromoVariant::
+                  kCustomUiChipIph)}});
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(ZeroStatePromoChipsUiTest, AllTests) {
+  ZeroStatePromoBrowserTest::RunTest(
+      "extensions_zero_state/zero_state_promo_app_test.js", "mocha.run()");
+}
diff --git a/chrome/test/data/webui/glic/test_client/index.html b/chrome/test/data/webui/glic/test_client/index.html
index 47bffaa..9308b6a 100644
--- a/chrome/test/data/webui/glic/test_client/index.html
+++ b/chrome/test/data/webui/glic/test_client/index.html
@@ -469,6 +469,10 @@
     <div><label>Node</label><select disabled id="scrollToNode" class="scrollToNodeSelect"></select></div>
   </div>
   <button id="scrollToBn" style="margin-top: 12px;">Scroll!</button>
+  <div>
+    <h2>Test dropScrollToHighlight()</h2>
+    <button id="dropScrollToHighlightBtn">Drop Highlight</button>
+  </div>
 </div>
 <div class="section">
   <h1>Set Synthetic Experiment</h1>
diff --git a/chrome/test/data/webui/glic/test_client/page_element_types.ts b/chrome/test/data/webui/glic/test_client/page_element_types.ts
index a9cd1fcb..9dc245fb 100644
--- a/chrome/test/data/webui/glic/test_client/page_element_types.ts
+++ b/chrome/test/data/webui/glic/test_client/page_element_types.ts
@@ -121,6 +121,7 @@
   closedCaptioningSwitch: HTMLInputElement;
   setClosedCaptioningTrue: HTMLButtonElement;
   setClosedCaptioningFalse: HTMLButtonElement;
+  dropScrollToHighlightBtn: HTMLButtonElement;
 }
 
 export const $: PageElementTypes = new Proxy({}, {
diff --git a/chrome/test/data/webui/glic/test_client/sections/scroll_to.ts b/chrome/test/data/webui/glic/test_client/sections/scroll_to.ts
index fa2bfce8..3c1d36d 100644
--- a/chrome/test/data/webui/glic/test_client/sections/scroll_to.ts
+++ b/chrome/test/data/webui/glic/test_client/sections/scroll_to.ts
@@ -153,3 +153,7 @@
     logMessage(`scrollTo failed: ${error}`);
   }
 });
+
+$.dropScrollToHighlightBtn.addEventListener('click', () => {
+  getBrowser()!.dropScrollToHighlight!();
+});
diff --git a/chrome/updater/certificate_tag.cc b/chrome/updater/certificate_tag.cc
index 6d013670..1c6702c 100644
--- a/chrome/updater/certificate_tag.cc
+++ b/chrome/updater/certificate_tag.cc
@@ -494,7 +494,7 @@
   }
 
   // Recreate the header for the `WIN_CERTIFICATE` structure.
-  constexpr size_t kSizeofWinCertificateHeader = 8;
+  static constexpr size_t kSizeofWinCertificateHeader = 8;
   std::vector<uint8_t> win_certificate_header(kSizeofWinCertificateHeader);
   const uint32_t certs_size = kSizeofWinCertificateHeader + ret->size();
   memcpy(&win_certificate_header[0], &certs_size, sizeof(certs_size));
diff --git a/chrome/updater/certificate_tag_unittest.cc b/chrome/updater/certificate_tag_unittest.cc
index ed443b4..de5805b 100644
--- a/chrome/updater/certificate_tag_unittest.cc
+++ b/chrome/updater/certificate_tag_unittest.cc
@@ -40,7 +40,7 @@
   std::optional<std::vector<uint8_t>> orig_tag(bin->tag());
   EXPECT_FALSE(orig_tag);
 
-  constexpr uint8_t kTag[] = {1, 2, 3, 4, 5};
+  static constexpr uint8_t kTag[] = {1, 2, 3, 4, 5};
   std::optional<std::vector<uint8_t>> updated_exe(bin->SetTag(kTag));
   ASSERT_TRUE(updated_exe);
 
@@ -52,7 +52,7 @@
   EXPECT_TRUE(memcmp(kTag, parsed_tag->data(), sizeof(kTag)) == 0);
 
   // Update an existing tag.
-  constexpr uint8_t kTag2[] = {1, 2, 3, 4, 6};
+  static constexpr uint8_t kTag2[] = {1, 2, 3, 4, 6};
   std::optional<std::vector<uint8_t>> updated_again_exe(bin2->SetTag(kTag2));
   ASSERT_TRUE(updated_again_exe);
 
@@ -551,9 +551,9 @@
         {"GUH-multiple.msi",
          [] {
            std::vector<uint8_t> expected_tag(8632);
-           constexpr char magic[] = "Gact2.0Omaha";
+           static constexpr char magic[] = "Gact2.0Omaha";
            std::memcpy(&expected_tag[0], magic, sizeof(magic));
-           constexpr char tag[] =
+           static constexpr char tag[] =
                "appguid={8A69D345-D564-463C-AFF1-A69D9E530F96}&iid={2D8C18E9-"
                "8D3A-4EFC-6D61-AE23E3530EA2}&lang=en&browser=4&usagestats=0&"
                "appname=Google%20Chrome&needsadmin=prefers&brand=CHMB&"
diff --git a/chrome/updater/crash_reporter.cc b/chrome/updater/crash_reporter.cc
index 387989a..634cf3d 100644
--- a/chrome/updater/crash_reporter.cc
+++ b/chrome/updater/crash_reporter.cc
@@ -94,7 +94,7 @@
   // Save dereferenced memory from all registers on the crashing thread.
   // Crashpad saves up to 512 bytes per CPU register, and in the worst case,
   // ARM64 has 32 registers.
-  constexpr uint32_t kIndirectMemoryLimit = 32 * 512;
+  static constexpr uint32_t kIndirectMemoryLimit = 32 * 512;
   crashpad::CrashpadInfo::GetCrashpadInfo()
       ->set_gather_indirectly_referenced_memory(crashpad::TriState::kEnabled,
                                                 kIndirectMemoryLimit);
diff --git a/chrome/updater/device_management/dm_client_unittest.cc b/chrome/updater/device_management/dm_client_unittest.cc
index e6fabb25..b6743f8 100644
--- a/chrome/updater/device_management/dm_client_unittest.cc
+++ b/chrome/updater/device_management/dm_client_unittest.cc
@@ -126,8 +126,8 @@
 
   void CreateStorage(bool init_dm_token, bool init_cache_info) {
     ASSERT_TRUE(storage_dir_.CreateUniqueTempDir());
-    constexpr char kEnrollmentToken[] = "TestEnrollmentToken";
-    constexpr char kDmToken[] = "test-dm-token";
+    static constexpr char kEnrollmentToken[] = "TestEnrollmentToken";
+    static constexpr char kDmToken[] = "test-dm-token";
     storage_ =
         CreateDMStorage(storage_dir_.GetPath(),
                         std::make_unique<TestTokenService>(
diff --git a/chrome/updater/device_management/dm_policy_builder_for_testing.cc b/chrome/updater/device_management/dm_policy_builder_for_testing.cc
index 8ed2628..8cf61da 100644
--- a/chrome/updater/device_management/dm_policy_builder_for_testing.cc
+++ b/chrome/updater/device_management/dm_policy_builder_for_testing.cc
@@ -142,13 +142,13 @@
 }  // namespace
 
 std::unique_ptr<DMSigningKeyForTesting> GetTestKey1() {
-  constexpr int kFakeKeyVersion = 5;
+  static constexpr int kFakeKeyVersion = 5;
   return std::make_unique<DMSigningKeyForTesting>(
       kSigningKey1, kSigningKey1Signature, kFakeKeyVersion, "example.com");
 }
 
 std::unique_ptr<DMSigningKeyForTesting> GetTestKey2() {
-  constexpr int kFakeKeyVersion = 7;
+  static constexpr int kFakeKeyVersion = 7;
   return std::make_unique<DMSigningKeyForTesting>(
       kSigningKey2, kSigningKey2Signature, kFakeKeyVersion, "example.com");
 }
diff --git a/chrome/updater/ipc/proxy_impl_base_win.h b/chrome/updater/ipc/proxy_impl_base_win.h
index 6abf32c..016ab9e 100644
--- a/chrome/updater/ipc/proxy_impl_base_win.h
+++ b/chrome/updater/ipc/proxy_impl_base_win.h
@@ -74,7 +74,7 @@
     // normal operation and retrying on registration issues does not help.
     const auto create_server =
         [](REFCLSID clsid) -> HResultOr<Microsoft::WRL::ComPtr<IUnknown>> {
-      constexpr int kNumTries = 2;
+      static constexpr int kNumTries = 2;
       HRESULT hr = E_FAIL;
       for (int i = 0; i != kNumTries; ++i) {
         Microsoft::WRL::ComPtr<IUnknown> server;
diff --git a/chrome/updater/ipc/update_service_proxy_win.cc b/chrome/updater/ipc/update_service_proxy_win.cc
index fd727838..6b6a3c8e 100644
--- a/chrome/updater/ipc/update_service_proxy_win.cc
+++ b/chrome/updater/ipc/update_service_proxy_win.cc
@@ -323,7 +323,7 @@
       if (FAILED(hr)) {
         return hr;
       }
-      constexpr int kMaxTries = 2;
+      static constexpr int kMaxTries = 2;
       for (int try_count = 0; try_count < kMaxTries; ++try_count) {
         HResultOr<UpdateService::AppState> service_app_states =
             IUpdaterAppStateToAppState(app_state);
diff --git a/chrome/updater/mac/install_from_archive.mm b/chrome/updater/mac/install_from_archive.mm
index 92db790e..bea44df 100644
--- a/chrome/updater/mac/install_from_archive.mm
+++ b/chrome/updater/mac/install_from_archive.mm
@@ -130,7 +130,7 @@
     return false;
   }
 
-  constexpr int kExecutableMask = base::FILE_PERMISSION_EXECUTE_BY_USER;
+  static constexpr int kExecutableMask = base::FILE_PERMISSION_EXECUTE_BY_USER;
   return (permissions & kExecutableMask) == kExecutableMask;
 }
 
@@ -230,7 +230,7 @@
     std::string output;
     base::Time deadline = base::Time::Now() + timeout;
 
-    constexpr size_t kBufferSize = 1024;
+    static constexpr size_t kBufferSize = 1024;
     base::CheckedNumeric<size_t> total_bytes_read = 0;
     ssize_t read_this_pass = 0;
     do {
diff --git a/chrome/updater/mac/setup/keystone.mm b/chrome/updater/mac/setup/keystone.mm
index 6e356992..2b32ebb5 100644
--- a/chrome/updater/mac/setup/keystone.mm
+++ b/chrome/updater/mac/setup/keystone.mm
@@ -154,11 +154,11 @@
 
   // For system installs, set file permissions to be drwxr-xr-x.
   if (IsSystemInstall(scope)) {
-    constexpr int kPermissionsMask = base::FILE_PERMISSION_USER_MASK |
-                                     base::FILE_PERMISSION_READ_BY_GROUP |
-                                     base::FILE_PERMISSION_EXECUTE_BY_GROUP |
-                                     base::FILE_PERMISSION_READ_BY_OTHERS |
-                                     base::FILE_PERMISSION_EXECUTE_BY_OTHERS;
+    static constexpr int kPermissionsMask =
+        base::FILE_PERMISSION_USER_MASK | base::FILE_PERMISSION_READ_BY_GROUP |
+        base::FILE_PERMISSION_EXECUTE_BY_GROUP |
+        base::FILE_PERMISSION_READ_BY_OTHERS |
+        base::FILE_PERMISSION_EXECUTE_BY_OTHERS;
     if (!base::SetPosixFilePermissions(dest_path.DirName(), kPermissionsMask) ||
         !base::SetPosixFilePermissions(dest_path, kPermissionsMask)) {
       LOG(ERROR) << "Failed to set permissions to drwxr-xr-x at "
@@ -206,10 +206,10 @@
 }  // namespace
 
 bool CreateEmptyPlistFile(const base::FilePath& file_path) {
-  constexpr int kPermissionsMask = base::FILE_PERMISSION_READ_BY_USER |
-                                   base::FILE_PERMISSION_WRITE_BY_USER |
-                                   base::FILE_PERMISSION_READ_BY_GROUP |
-                                   base::FILE_PERMISSION_READ_BY_OTHERS;
+  static constexpr int kPermissionsMask = base::FILE_PERMISSION_READ_BY_USER |
+                                          base::FILE_PERMISSION_WRITE_BY_USER |
+                                          base::FILE_PERMISSION_READ_BY_GROUP |
+                                          base::FILE_PERMISSION_READ_BY_OTHERS;
   const base::FilePath dir = file_path.DirName();
   if (!base::PathExists(dir)) {
     base::File::Error error;
diff --git a/chrome/updater/mac/setup/keystone_unittest.mm b/chrome/updater/mac/setup/keystone_unittest.mm
index 3979ab8..697f5b78 100644
--- a/chrome/updater/mac/setup/keystone_unittest.mm
+++ b/chrome/updater/mac/setup/keystone_unittest.mm
@@ -48,10 +48,10 @@
 };
 
 TEST_F(KeystoneTest, CreateEmptyPlistFile) {
-  constexpr int kPermissionsMask = base::FILE_PERMISSION_READ_BY_USER |
-                                   base::FILE_PERMISSION_WRITE_BY_USER |
-                                   base::FILE_PERMISSION_READ_BY_GROUP |
-                                   base::FILE_PERMISSION_READ_BY_OTHERS;
+  static constexpr int kPermissionsMask = base::FILE_PERMISSION_READ_BY_USER |
+                                          base::FILE_PERMISSION_WRITE_BY_USER |
+                                          base::FILE_PERMISSION_READ_BY_GROUP |
+                                          base::FILE_PERMISSION_READ_BY_OTHERS;
   base::ScopedTempDir temp_dir;
   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
 
diff --git a/chrome/updater/mac/setup/mac_setup.mm b/chrome/updater/mac/setup/mac_setup.mm
index f8ec355..9fa1aa1 100644
--- a/chrome/updater/mac/setup/mac_setup.mm
+++ b/chrome/updater/mac/setup/mac_setup.mm
@@ -72,11 +72,11 @@
 
   // For system installs, set file permissions to be drwxr-xr-x
   if (IsSystemInstall(scope)) {
-    constexpr int kPermissionsMask = base::FILE_PERMISSION_USER_MASK |
-                                     base::FILE_PERMISSION_READ_BY_GROUP |
-                                     base::FILE_PERMISSION_EXECUTE_BY_GROUP |
-                                     base::FILE_PERMISSION_READ_BY_OTHERS |
-                                     base::FILE_PERMISSION_EXECUTE_BY_OTHERS;
+    static constexpr int kPermissionsMask =
+        base::FILE_PERMISSION_USER_MASK | base::FILE_PERMISSION_READ_BY_GROUP |
+        base::FILE_PERMISSION_EXECUTE_BY_GROUP |
+        base::FILE_PERMISSION_READ_BY_OTHERS |
+        base::FILE_PERMISSION_EXECUTE_BY_OTHERS;
     if (!base::SetPosixFilePermissions(base_install_dir->DirName(),
                                        kPermissionsMask) ||
         !base::SetPosixFilePermissions(*base_install_dir, kPermissionsMask) ||
diff --git a/chrome/updater/policy/dm_policy_manager_unittest.cc b/chrome/updater/policy/dm_policy_manager_unittest.cc
index 320abb16..4d16b52 100644
--- a/chrome/updater/policy/dm_policy_manager_unittest.cc
+++ b/chrome/updater/policy/dm_policy_manager_unittest.cc
@@ -252,7 +252,7 @@
   omaha_settings.mutable_application_settings()->Add(std::move(chrome));
 
   // App1 policies.
-  constexpr char kApp1[] = "app1.chromium.org";
+  static constexpr char kApp1[] = "app1.chromium.org";
   ::wireless_android_enterprise_devicemanagement::ApplicationSettings app1;
   app1.set_app_guid(kApp1);
   app1.set_bundle_identifier(kApp1);
@@ -264,7 +264,7 @@
   omaha_settings.mutable_application_settings()->Add(std::move(app1));
 
   // App2 policies.
-  constexpr char kApp2[] = "app2.chromium.org";
+  static constexpr char kApp2[] = "app2.chromium.org";
   ::wireless_android_enterprise_devicemanagement::ApplicationSettings app2;
   app2.set_app_guid(kApp2);
   app2.set_install(
diff --git a/chrome/updater/policy/policy_manager.cc b/chrome/updater/policy/policy_manager.cc
index e454ce2..ed3f2be 100644
--- a/chrome/updater/policy/policy_manager.cc
+++ b/chrome/updater/policy/policy_manager.cc
@@ -65,7 +65,7 @@
 
 PolicyManager::PolicyManager(base::Value::Dict policies)
     : policies_(std::move(policies)) {
-  constexpr size_t kInstallAppPrefixLength =
+  static constexpr size_t kInstallAppPrefixLength =
       std::string_view(kInstallAppPrefix).length();
   std::ranges::for_each(policies_, [&](const auto& policy) {
     const std::string policy_name = policy.first;
diff --git a/chrome/updater/tag.cc b/chrome/updater/tag.cc
index 781c654..0a6cf86 100644
--- a/chrome/updater/tag.cc
+++ b/chrome/updater/tag.cc
@@ -646,7 +646,7 @@
 
 // Loads up to the last 80K bytes from `filename`.
 std::vector<uint8_t> ReadFileTail(const base::FilePath& filename) {
-  constexpr int64_t kMaxBytesToRead = 81920;  // 80K
+  static constexpr int64_t kMaxBytesToRead = 81920;  // 80K
 
   base::File file(filename, base::File::FLAG_OPEN | base::File::FLAG_READ);
   if (!file.IsValid()) {
diff --git a/chrome/updater/test/request_matcher.cc b/chrome/updater/test/request_matcher.cc
index f6a9c3c..b1fa0e7 100644
--- a/chrome/updater/test/request_matcher.cc
+++ b/chrome/updater/test/request_matcher.cc
@@ -229,7 +229,7 @@
     const std::vector<FormExpectations>& form_expections) {
   return base::BindLambdaForTesting([form_expections](
                                         const HttpRequest& request) {
-    constexpr char kMultifpartBoundaryPrefix[] =
+    static constexpr char kMultifpartBoundaryPrefix[] =
         "multipart/form-data; boundary=";
     if (!request.headers.contains("Content-Type")) {
       ADD_FAILURE() << "Content-Type header not found, which is expected "
diff --git a/chrome/updater/test/run_all_unittests.cc b/chrome/updater/test/run_all_unittests.cc
index 7b3d83ba..fcdede8 100644
--- a/chrome/updater/test/run_all_unittests.cc
+++ b/chrome/updater/test/run_all_unittests.cc
@@ -117,7 +117,7 @@
  private:
   // Notifies the processes that the environment has been changed to reload it.
   static void BroadcastEnvironmentChange() {
-    constexpr int kTimeOutMilliSeconds = 100;
+    static constexpr int kTimeOutMilliSeconds = 100;
     DWORD_PTR result = 0;
     ::SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
                          reinterpret_cast<LPARAM>(L"Environment"), SMTO_NORMAL,
diff --git a/chrome/updater/test/test_installer/main.cc b/chrome/updater/test/test_installer/main.cc
index 92a56b8..761afc3 100644
--- a/chrome/updater/test/test_installer/main.cc
+++ b/chrome/updater/test/test_installer/main.cc
@@ -101,7 +101,7 @@
 }
 
 int RunAllResourceScripts() {
-  constexpr char kScriptResourceNameSwitch[] = "script_resource_name";
+  static constexpr char kScriptResourceNameSwitch[] = "script_resource_name";
 
   base::ScopedTempDir working_dir;
   if (!working_dir.CreateUniqueTempDir()) {
diff --git a/chrome/updater/test/unit_test_util.cc b/chrome/updater/test/unit_test_util.cc
index e29f4a0..94b2cbb1 100644
--- a/chrome/updater/test/unit_test_util.cc
+++ b/chrome/updater/test/unit_test_util.cc
@@ -416,7 +416,7 @@
 
 bool WaitFor(base::FunctionRef<bool()> predicate,
              base::FunctionRef<void()> still_waiting) {
-  constexpr base::TimeDelta kOutputInterval = base::Seconds(10);
+  static constexpr base::TimeDelta kOutputInterval = base::Seconds(10);
   auto notify_next = base::TimeTicks::Now() + kOutputInterval;
   const auto deadline = base::TimeTicks::Now() + TestTimeouts::action_timeout();
   while (base::TimeTicks::Now() < deadline) {
diff --git a/chrome/updater/test/unit_test_util_unittest.cc b/chrome/updater/test/unit_test_util_unittest.cc
index 5ac7bb0b..8af5308 100644
--- a/chrome/updater/test/unit_test_util_unittest.cc
+++ b/chrome/updater/test/unit_test_util_unittest.cc
@@ -91,7 +91,7 @@
 
   // Terminate the long-lived processes, expect to find them not running, then
   // inspect their exit code.
-  constexpr int kExitCode = 12345;
+  static constexpr int kExitCode = 12345;
   EXPECT_FALSE(WaitForProcessesToExit(kTestProcessExecutableName,
                                       base::Milliseconds(1)));
   EXPECT_TRUE(KillProcesses(kTestProcessExecutableName, kExitCode));
diff --git a/chrome/updater/test/unit_test_util_win.cc b/chrome/updater/test/unit_test_util_win.cc
index 62b7496..97d9c7377 100644
--- a/chrome/updater/test/unit_test_util_win.cc
+++ b/chrome/updater/test/unit_test_util_win.cc
@@ -111,7 +111,7 @@
 void SetupCmdExe(UpdaterScope scope,
                  base::CommandLine& cmd_exe_command_line,
                  base::ScopedTempDir& temp_programfiles_dir) {
-  constexpr wchar_t kCmdExe[] = L"cmd.exe";
+  static constexpr wchar_t kCmdExe[] = L"cmd.exe";
 
   base::FilePath system_path;
   ASSERT_TRUE(base::PathService::Get(base::DIR_SYSTEM, &system_path));
diff --git a/chrome/updater/tools/updater_util.cc b/chrome/updater/tools/updater_util.cc
index 46d6ce7..6280067 100644
--- a/chrome/updater/tools/updater_util.cc
+++ b/chrome/updater/tools/updater_util.cc
@@ -259,7 +259,7 @@
 
 void PrintCachedPolicyInfo(
     const device_management_storage::CachedPolicyInfo& cached_info) {
-  constexpr size_t kPrintWidth = 16;
+  static constexpr size_t kPrintWidth = 16;
 
   std::cout << "Cached policy info:" << std::endl;
   std::cout << "  Key version: " << cached_info.key_version() << std::endl;
diff --git a/chrome/updater/util/mac_util.mm b/chrome/updater/util/mac_util.mm
index 340bc38..a78a526 100644
--- a/chrome/updater/util/mac_util.mm
+++ b/chrome/updater/util/mac_util.mm
@@ -239,9 +239,9 @@
 }
 
 bool SetFilePermissionsRecursive(const base::FilePath& path) {
-  constexpr mode_t executable_mode =
+  static constexpr mode_t executable_mode =
       S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
-  constexpr mode_t normal_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
+  static constexpr mode_t normal_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
   struct stat stat_buf;
   if (lstat(path.value().c_str(), &stat_buf) != 0) {
     VPLOG(2) << "Couldn't stat: " << path.value();
diff --git a/chrome/updater/util/util.cc b/chrome/updater/util/util.cc
index d802397..10ac2ae5 100644
--- a/chrome/updater/util/util.cc
+++ b/chrome/updater/util/util.cc
@@ -227,7 +227,7 @@
 #if BUILDFLAG(IS_WIN)
   // Enable Event Tracing for Windows.
   // {4D7D9607-78B6-4583-A188-2136AB85F5F1}
-  constexpr GUID kUpdaterETWProviderName = {
+  static constexpr GUID kUpdaterETWProviderName = {
       0x4d7d9607,
       0x78b6,
       0x4583,
diff --git a/chrome/updater/util/win_util.cc b/chrome/updater/util/win_util.cc
index de7baa0..0af950d 100644
--- a/chrome/updater/util/win_util.cc
+++ b/chrome/updater/util/win_util.cc
@@ -108,7 +108,7 @@
   if (!authority) {
     return E_FAIL;
   }
-  constexpr SID_IDENTIFIER_AUTHORITY kMandatoryLabelAuth =
+  static constexpr SID_IDENTIFIER_AUTHORITY kMandatoryLabelAuth =
       SECURITY_MANDATORY_LABEL_AUTHORITY;
   if (UNSAFE_TODO(std::memcmp(authority, &kMandatoryLabelAuth,
                               sizeof(SID_IDENTIFIER_AUTHORITY)))) {
@@ -759,9 +759,10 @@
 bool CompareOSVersions(const OSVERSIONINFOEX& os_version, BYTE oper) {
   CHECK(oper);
 
-  constexpr DWORD kOSTypeMask = VER_MAJORVERSION | VER_MINORVERSION |
-                                VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR;
-  constexpr DWORD kBuildTypeMask = VER_BUILDNUMBER;
+  static constexpr DWORD kOSTypeMask = VER_MAJORVERSION | VER_MINORVERSION |
+                                       VER_SERVICEPACKMAJOR |
+                                       VER_SERVICEPACKMINOR;
+  static constexpr DWORD kBuildTypeMask = VER_BUILDNUMBER;
 
   // If the OS and the service pack match, return the build number comparison.
   return CompareOSVersionsInternal(os_version, kOSTypeMask, VER_EQUAL)
@@ -1449,7 +1450,7 @@
 
 std::wstring StringFromGuid(const GUID& guid) {
   // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
-  constexpr int kGuidStringCharacters =
+  static constexpr int kGuidStringCharacters =
       1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1;
   wchar_t guid_string[kGuidStringCharacters] = {};
   CHECK_NE(::StringFromGUID2(guid, guid_string, kGuidStringCharacters), 0);
@@ -1516,7 +1517,7 @@
     return false;
   }
 
-  constexpr uint32_t kMaxQueryConfigBufferBytes = 8 * 1024;
+  static constexpr uint32_t kMaxQueryConfigBufferBytes = 8 * 1024;
   auto buffer = std::make_unique<uint8_t[]>(kMaxQueryConfigBufferBytes);
   DWORD bytes_needed_ignored = 0;
   QUERY_SERVICE_CONFIG* service_config =
diff --git a/chrome/updater/util/win_util_unittest.cc b/chrome/updater/util/win_util_unittest.cc
index 80d08588..1058a7a5 100644
--- a/chrome/updater/util/win_util_unittest.cc
+++ b/chrome/updater/util/win_util_unittest.cc
@@ -385,7 +385,7 @@
 }
 
 TEST(WinUtil, ForEachRegistryRunValueWithPrefix) {
-  constexpr int kRunEntries = 6;
+  static constexpr int kRunEntries = 6;
   const std::wstring kRunEntryPrefix(base::UTF8ToWide(test::GetTestName()));
 
   base::win::RegKey key;
@@ -411,7 +411,7 @@
 }
 
 TEST(WinUtil, DeleteRegValue) {
-  constexpr int kRegValues = 6;
+  static constexpr int kRegValues = 6;
   const std::wstring kRegValuePrefix(base::UTF8ToWide(test::GetTestName()));
 
   base::win::RegKey key;
@@ -436,7 +436,7 @@
     return;
   }
 
-  constexpr int kNumServices = 6;
+  static constexpr int kNumServices = 6;
   const std::wstring kServiceNamePrefix(base::UTF8ToWide(test::GetTestName()));
 
   for (int count = 0; count < kNumServices; ++count) {
@@ -462,7 +462,7 @@
     return;
   }
 
-  constexpr int kNumServices = 6;
+  static constexpr int kNumServices = 6;
   const std::wstring kServiceNamePrefix(base::UTF8ToWide(test::GetTestName()));
 
   for (int count = 0; count < kNumServices; ++count) {
diff --git a/chrome/updater/win/app_command_runner.cc b/chrome/updater/win/app_command_runner.cc
index b521226..12cca54 100644
--- a/chrome/updater/win/app_command_runner.cc
+++ b/chrome/updater/win/app_command_runner.cc
@@ -70,10 +70,11 @@
 HRESULT LoadLegacyProcessLauncherFormat(const std::wstring& app_id,
                                         const std::wstring& command_id,
                                         std::wstring& command_format) {
-  constexpr wchar_t kAllowedLegacyProcessLauncherAppNamePrefix[] =
+  static constexpr wchar_t kAllowedLegacyProcessLauncherAppNamePrefix[] =
       L"" BROWSER_PRODUCT_NAME_STRING;
-  constexpr char kAllowedLegacyProcessLauncherMaxAppVersion[] = "110.0.5435.0";
-  constexpr wchar_t kAllowedLegacyProcessLauncherCommandId[] = L"cmd";
+  static constexpr char kAllowedLegacyProcessLauncherMaxAppVersion[] =
+      "110.0.5435.0";
+  static constexpr wchar_t kAllowedLegacyProcessLauncherCommandId[] = L"cmd";
 
   std::wstring pv;
   std::wstring name;
@@ -301,7 +302,7 @@
       return std::nullopt;
     }
 
-    constexpr wchar_t kQuotableCharacters[] = L" \t\\\"";
+    static constexpr wchar_t kQuotableCharacters[] = L" \t\\\"";
     formatted_command_line.append(
         formatted_parameter->find_first_of(kQuotableCharacters) ==
                 std::wstring::npos
diff --git a/chrome/updater/win/installer/configuration.cc b/chrome/updater/win/installer/configuration.cc
index 8a860123c2..7d44614 100644
--- a/chrome/updater/win/installer/configuration.cc
+++ b/chrome/updater/win/installer/configuration.cc
@@ -19,7 +19,7 @@
 
 // Returns true if GoogleUpdateIsMachine=1 is present in the environment.
 bool GetGoogleUpdateIsMachineEnvVar() {
-  constexpr DWORD kBufferSize = 2;
+  static constexpr DWORD kBufferSize = 2;
   StackString<kBufferSize> value;
   const auto length = ::GetEnvironmentVariableW(L"GoogleUpdateIsMachine",
                                                 value.get(), kBufferSize);
diff --git a/chrome/updater/win/installer/pe_resource.cc b/chrome/updater/win/installer/pe_resource.cc
index fb4e3dc..e7268c7 100644
--- a/chrome/updater/win/installer/pe_resource.cc
+++ b/chrome/updater/win/installer/pe_resource.cc
@@ -48,7 +48,7 @@
   // Don't write all of the data at once because this can lead to kernel
   // address-space exhaustion on 32-bit Windows (see https://crbug.com/1001022
   // for details).
-  constexpr size_t kMaxWriteAmount = 8 * 1024 * 1024;
+  static constexpr size_t kMaxWriteAmount = 8 * 1024 * 1024;
   for (size_t total_written = 0; total_written < data_span.size(); /**/) {
     const size_t write_amount =
         std::min(kMaxWriteAmount, data_span.size() - total_written);
diff --git a/chrome/updater/win/manifest_util.cc b/chrome/updater/win/manifest_util.cc
index a744863..a98875a 100644
--- a/chrome/updater/win/manifest_util.cc
+++ b/chrome/updater/win/manifest_util.cc
@@ -63,7 +63,7 @@
     return std::nullopt;
   }
 
-  constexpr int64_t kMaxManifestSize = 1024 * 1024;
+  static constexpr int64_t kMaxManifestSize = 1024 * 1024;
   if (file_size.value() > kMaxManifestSize) {
     VLOG(2) << "Manifest file is too large.";
     return std::nullopt;
diff --git a/chrome/updater/win/task_scheduler_unittest.cc b/chrome/updater/win/task_scheduler_unittest.cc
index 0207698..5583f06 100644
--- a/chrome/updater/win/task_scheduler_unittest.cc
+++ b/chrome/updater/win/task_scheduler_unittest.cc
@@ -490,7 +490,7 @@
       GetUpdaterScopeForTesting(), /*use_task_subfolders=*/false);
   ASSERT_TRUE(task_scheduler);
 
-  constexpr int kNumTasks = 6;
+  static constexpr int kNumTasks = 6;
   const std::wstring kTaskNamePrefix(base::UTF8ToWide(test::GetTestName()));
 
   for (int count = 0; count < kNumTasks; ++count) {
@@ -512,7 +512,7 @@
         GetUpdaterScopeForTesting(), use_task_subfolders);
     ASSERT_TRUE(task_scheduler);
 
-    constexpr int kNumTasks = 6;
+    static constexpr int kNumTasks = 6;
     const std::wstring kTaskNamePrefix(base::UTF8ToWide(test::GetTestName()));
 
     for (int count = 0; count < kNumTasks; ++count) {
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 5fa2675..148a643 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-16291.0.0-1069055
\ No newline at end of file
+16289.0.0-1068983
\ No newline at end of file
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni
index f8c6598..4f786b2 100644
--- a/chromeos/tast_control.gni
+++ b/chromeos/tast_control.gni
@@ -105,9 +105,6 @@
   # b/409349162
   "inputs.PhysicalKeyboardKoreanTyping@jacuzzi",
 
-  # b/419598394
-  "dlp.DataLeakPreventionRulesListFilesUSB.ash_blocked@brya",
-
   # READ COMMENT AT TOP BEFORE ADDING NEW TESTS HERE.
 ]
 
diff --git a/clank b/clank
index c3f13e0..180ea8e 160000
--- a/clank
+++ b/clank
@@ -1 +1 @@
-Subproject commit c3f13e04659dc7e088022d2ea2478a036ea41011
+Subproject commit 180ea8ed2b2e73fb52d4201a021d0acd2801c05b
diff --git a/components/attribution_reporting/source_registration.cc b/components/attribution_reporting/source_registration.cc
index ac9870c..008b8a6 100644
--- a/components/attribution_reporting/source_registration.cc
+++ b/components/attribution_reporting/source_registration.cc
@@ -65,6 +65,8 @@
       /*exclusive_max=*/25 + 1);
   static_assert(attribution_reporting::kMaxAggregatableNamedBudgetsPerSource ==
                 25);
+  base::UmaHistogramEnumeration("Conversions.TriggerDataMatchingRegistration",
+                                result.trigger_data_matching);
 }
 
 void RecordSourceRegistrationError(SourceRegistrationError error) {
diff --git a/components/attribution_reporting/source_registration_unittest.cc b/components/attribution_reporting/source_registration_unittest.cc
index 6c6a257..755db55 100644
--- a/components/attribution_reporting/source_registration_unittest.cc
+++ b/components/attribution_reporting/source_registration_unittest.cc
@@ -389,6 +389,9 @@
 
     if (source.has_value()) {
       histograms.ExpectTotalCount(kSourceRegistrationErrorMetric, 0);
+      histograms.ExpectUniqueSample(
+          "Conversions.TriggerDataMatchingRegistration",
+          static_cast<int>(source->trigger_data_matching), 1);
     } else {
       histograms.ExpectUniqueSample(kSourceRegistrationErrorMetric,
                                     source.error(), 1);
diff --git a/components/attribution_reporting/trigger_config.cc b/components/attribution_reporting/trigger_config.cc
index c89f5a4..e3767df 100644
--- a/components/attribution_reporting/trigger_config.cc
+++ b/components/attribution_reporting/trigger_config.cc
@@ -14,6 +14,7 @@
 #include "base/check.h"
 #include "base/containers/flat_set.h"
 #include "base/containers/flat_tree.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/time/time.h"
 #include "base/types/expected.h"
 #include "base/types/expected_macros.h"
@@ -144,8 +145,12 @@
       }
       // `std::next()` is constant-time due to the underlying iterator being
       // random-access.
-      return *std::next(trigger_data_.begin(),
-                        trigger_data % trigger_data_.size());
+      const uint32_t out = *std::next(trigger_data_.begin(),
+                                      trigger_data % trigger_data_.size());
+      base::UmaHistogramBoolean(
+          "Conversions.TriggerDataMatchingModulusSameInputOutput",
+          trigger_data == out);
+      return out;
   }
 }
 
diff --git a/components/attribution_reporting/trigger_config_unittest.cc b/components/attribution_reporting/trigger_config_unittest.cc
index 4179e05..71b36be2 100644
--- a/components/attribution_reporting/trigger_config_unittest.cc
+++ b/components/attribution_reporting/trigger_config_unittest.cc
@@ -10,6 +10,7 @@
 #include <utility>
 
 #include "base/test/gmock_expected_support.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/values_test_util.h"
 #include "base/types/expected.h"
 #include "base/values.h"
@@ -322,15 +323,21 @@
   const struct {
     uint64_t trigger_data;
     std::optional<uint32_t> expected;
+    bool expected_metric_value;
   } kTestCases[] = {
-      {0, 0}, {1, 1}, {2, 2}, {3, 0}, {4, 1}, {5, 2},
+      {0, 0, true},  {1, 1, true},  {2, 2, true},
+      {3, 0, false}, {4, 1, false}, {5, 2, false},
   };
 
   for (const auto& test_case : kTestCases) {
+    base::HistogramTester histograms;
     SCOPED_TRACE(test_case.trigger_data);
 
     EXPECT_EQ(kSet.find(test_case.trigger_data, TriggerDataMatching::kModulus),
               test_case.expected);
+    histograms.ExpectUniqueSample(
+        "Conversions.TriggerDataMatchingModulusSameInputOutput",
+        test_case.expected_metric_value, 1);
   }
 }
 
diff --git a/components/attribution_reporting/trigger_data_matching.mojom b/components/attribution_reporting/trigger_data_matching.mojom
index 32201fd..2accdba 100644
--- a/components/attribution_reporting/trigger_data_matching.mojom
+++ b/components/attribution_reporting/trigger_data_matching.mojom
@@ -7,6 +7,10 @@
 // Controls how trigger data is matched against a source's trigger specs.
 // Corresponds to
 // https://wicg.github.io/attribution-reporting-api/#trigger-data-matching-mode
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+//
+// LINT.IfChange(TriggerDataMatching)
 enum TriggerDataMatching {
   // Trigger data is taken modulo the default trigger data cardinality.
   kModulus = 0,
@@ -14,3 +18,4 @@
   // Otherwise, no event-level attribution takes place.
   kExact = 1,
 };
+// LINT.ThenChange(//tools/metrics/histograms/metadata/attribution_reporting/enums.xml:ConversionTriggerDataMatching)
diff --git a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/EmbeddableSettingsPage.java b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/EmbeddableSettingsPage.java
index 322cb5b8..809c4c1 100644
--- a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/EmbeddableSettingsPage.java
+++ b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/EmbeddableSettingsPage.java
@@ -30,11 +30,4 @@
      * <p>The activity will observe changes to this value and update the UI as necessary.
      */
     ObservableSupplier<String> getPageTitle();
-
-    @Override
-    default @AnimationType int getAnimationType() {
-        // TODO(crbug.com/404074032): Each leaf subclass should override this method to use
-        // PROPERTY animation with auditing.
-        return AnimationType.TWEEN;
-    }
 }
diff --git a/components/browser_ui/settings/android/widget/test_support_java/src/org/chromium/components/browser_ui/settings/PlaceholderSettingsForTest.java b/components/browser_ui/settings/android/widget/test_support_java/src/org/chromium/components/browser_ui/settings/PlaceholderSettingsForTest.java
index 06d5355..eeca79e2 100644
--- a/components/browser_ui/settings/android/widget/test_support_java/src/org/chromium/components/browser_ui/settings/PlaceholderSettingsForTest.java
+++ b/components/browser_ui/settings/android/widget/test_support_java/src/org/chromium/components/browser_ui/settings/PlaceholderSettingsForTest.java
@@ -30,4 +30,11 @@
     public ObservableSupplier<String> getPageTitle() {
         return mPageTitle;
     }
+
+    @Override
+    public @AnimationType int getAnimationType() {
+        // TODO(crbug.com/404074032): Each leaf subclass should override this method to use
+        // PROPERTY animation with auditing.
+        return AnimationType.TWEEN;
+    }
 }
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ClipDrawableProgressBar.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ClipDrawableProgressBar.java
index 4980bb8..54d2a75 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ClipDrawableProgressBar.java
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ClipDrawableProgressBar.java
@@ -55,6 +55,7 @@
     @Nullable private ColorDrawable mForegroundColorDrawable;
     @Nullable private GradientDrawable mForegroundGradientDrawable;
     @Nullable private GradientDrawable mBackgroundGradientDrawable;
+    @Nullable private GradientDrawable mEndCapCircleDrawable;
     private int mForegroundColor;
     private int mBackgroundColor;
     protected int mProgressBarHeight;
@@ -72,6 +73,7 @@
     public ClipDrawableProgressBar(Context context, AttributeSet attrs) {
         super(context, attrs);
 
+        setScaleType(ScaleType.FIT_XY); // Ensure the drawable fills the ImageView
         mDesiredVisibility = getVisibility();
 
         mForegroundColor = SemanticColorUtils.getProgressBarForeground(getContext());
@@ -91,27 +93,38 @@
     private void initializeDrawables() {
         if (useGradientDrawable()) {
             mForegroundGradientDrawable = createGradientDrawable(mForegroundColor,
-                    mProgressBarHeight / 2);
-            ClipDrawable foregroundClipDrawable =
-                    new ClipDrawable(mForegroundGradientDrawable, Gravity.START,
-                            ClipDrawable.HORIZONTAL);
+                    GradientDrawable.RECTANGLE);
+            mForegroundGradientDrawable.setCornerRadius((float) mProgressBarHeight / 2);
+            ClipDrawable foregroundClipDrawable = new ClipDrawable(mForegroundGradientDrawable,
+                    Gravity.START, ClipDrawable.HORIZONTAL);
 
             mBackgroundGradientDrawable = createGradientDrawable(mBackgroundColor,
-                    mProgressBarHeight / 2);
+                    GradientDrawable.RECTANGLE);
+            mBackgroundGradientDrawable.setCornerRadius((float) mProgressBarHeight / 2);
             ClipDrawable backgroundClipDrawable = new ClipDrawable(
                     mBackgroundGradientDrawable, Gravity.END, ClipDrawable.HORIZONTAL);
             // Background will be fully visible.
             backgroundClipDrawable.setLevel(CLIP_DRAWABLE_MAX);
 
-            // A layerDrawable with the 2 moving components, foreground and background.
-            Drawable[] layers = {foregroundClipDrawable, backgroundClipDrawable};
+            // Create the end circular stop indicator
+            mEndCapCircleDrawable = createGradientDrawable(mForegroundColor, GradientDrawable.OVAL);
+            mEndCapCircleDrawable.setSize(mProgressBarHeight, mProgressBarHeight);
 
-            setImageDrawable(new LayerDrawable(layers));
+            // A layerDrawable with the 2 moving components, foreground and background, and the
+            // end stop indicator. Layers are drawn in the order they are added to the array,
+            // with the last one appearing on top.
+            Drawable[] layers =
+                    {foregroundClipDrawable, backgroundClipDrawable, mEndCapCircleDrawable};
+            LayerDrawable layerDrawable = new LayerDrawable(layers);
+
+            // The circle (layer 2) will be drawn at the right end of the progress bar.
+            layerDrawable.setLayerGravity(2, Gravity.END | Gravity.CENTER_VERTICAL);
+
+            setImageDrawable(layerDrawable);
         } else {
             mForegroundColorDrawable = new ColorDrawable(mForegroundColor);
-            setImageDrawable(
-                    new ClipDrawable(mForegroundColorDrawable, Gravity.START,
-                            ClipDrawable.HORIZONTAL));
+            setImageDrawable(new ClipDrawable(mForegroundColorDrawable, Gravity.START,
+                    ClipDrawable.HORIZONTAL));
         }
     }
 
@@ -121,11 +134,10 @@
      * @param color The color to set for the drawable.
      * @return A new {@link GradientDrawable} instance.
      */
-    private static GradientDrawable createGradientDrawable(int color, int cornerRadius) {
+    private static GradientDrawable createGradientDrawable(int color, int shape) {
         GradientDrawable drawable = new GradientDrawable();
-        drawable.setShape(GradientDrawable.RECTANGLE);
+        drawable.setShape(shape);
         drawable.setColor(color);
-        drawable.setCornerRadius(cornerRadius);
         return drawable;
     }
 
@@ -292,8 +304,11 @@
      * @param color The new color of the progress bar foreground.
      */
     public void setForegroundColor(int color) {
-        if (useGradientDrawable() && mForegroundGradientDrawable != null) {
+        if (useGradientDrawable()) {
+            assert mForegroundGradientDrawable != null;
+            assert mEndCapCircleDrawable != null;
             mForegroundGradientDrawable.setColor(color);
+            mEndCapCircleDrawable.setColor(color);
         } else {
             assert mForegroundColorDrawable != null;
             mForegroundColorDrawable.setColor(color);
diff --git a/components/browsing_data/core/browsing_data_utils.h b/components/browsing_data/core/browsing_data_utils.h
index 61e3057..969890bd3 100644
--- a/components/browsing_data/core/browsing_data_utils.h
+++ b/components/browsing_data/core/browsing_data_utils.h
@@ -126,7 +126,7 @@
   kKeyboardEntryPointSelected = 31,
   kMaxValue = kKeyboardEntryPointSelected,
 };
-// LINT.ThenChange(//tools/metrics/histograms/enums.xml:DeleteBrowsingDataDialogAction)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:DeleteBrowsingDataDialogAction)
 
 // Calculate the begin time for the deletion range specified by |time_period|.
 base::Time CalculateBeginDeleteTime(TimePeriod time_period);
diff --git a/components/constrained_window/constrained_window_views.cc b/components/constrained_window/constrained_window_views.cc
index 6e91ffc..4421cf1 100644
--- a/components/constrained_window/constrained_window_views.cc
+++ b/components/constrained_window/constrained_window_views.cc
@@ -297,6 +297,13 @@
 
   web_modal::ModalDialogHost* const dialog_host =
       manager->delegate()->GetWebContentsModalDialogHost();
+  CHECK(dialog_host);
+
+  // Use desktop widget so that it is not constrained by the boundary of the
+  // host window.
+  dialog->set_use_desktop_widget_override(
+      !dialog_host->ShouldDialogBoundsConstrainedByHost());
+
   views::Widget* widget = views::DialogDelegate::CreateDialogWidget(
       dialog, gfx::NativeWindow(), dialog_host->GetHostView());
   std::unique_ptr<ModalDialogHostObserver> observer =
diff --git a/components/content_settings/core/browser/cookie_settings.h b/components/content_settings/core/browser/cookie_settings.h
index 319f7f5..5b81960 100644
--- a/components/content_settings/core/browser/cookie_settings.h
+++ b/components/content_settings/core/browser/cookie_settings.h
@@ -52,7 +52,7 @@
   kLimited = 3,
   kMaxValue = kLimited,
 };
-// LINT.ThenChange(/tools/metrics/histograms/enums.xml:CookieControlsMode, /chrome/browser/resources/settings/site_settings/constants.ts:CookieControlsMode)
+// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:CookieControlsMode, //chrome/browser/resources/settings/site_settings/constants.ts:CookieControlsMode)
 
 // Default value for |extension_scheme|.
 const char kDummyExtensionScheme[] = ":no-extension-scheme:";
diff --git a/components/content_settings/core/common/content_settings_pattern.h b/components/content_settings/core/common/content_settings_pattern.h
index 06e3fb49..3e3451a 100644
--- a/components/content_settings/core/common/content_settings_pattern.h
+++ b/components/content_settings/core/common/content_settings_pattern.h
@@ -103,7 +103,7 @@
                                               // *:443 etc.
     kMaxValue = kCustomScope
   };
-  // LINT.ThenChange(//tools/metrics/histograms/enums.xml:ContentSettingPatternScope)
+  // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:ContentSettingPatternScope)
 
   struct PatternParts {
     PatternParts();
diff --git a/components/enterprise/connectors/core/BUILD.gn b/components/enterprise/connectors/core/BUILD.gn
index 95bc0a1..15fae97 100644
--- a/components/enterprise/connectors/core/BUILD.gn
+++ b/components/enterprise/connectors/core/BUILD.gn
@@ -4,6 +4,10 @@
 
 import("//build/config/features.gni")
 import("//components/enterprise/buildflags/buildflags.gni")
+if (is_android) {
+  import("//build/config/android/config.gni")
+  import("//build/config/android/rules.gni")
+}
 
 source_set("core") {
   sources = [
@@ -145,3 +149,15 @@
     "//url",
   ]
 }
+
+if (is_android) {
+  android_library("connectors_java_enums") {
+    srcjar_deps = [ ":connectors_java_enums_srcjar" ]
+
+    deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
+  }
+
+  java_cpp_enum("connectors_java_enums_srcjar") {
+    sources = [ "common.h" ]
+  }
+}
diff --git a/components/enterprise/connectors/core/common.h b/components/enterprise/connectors/core/common.h
index 9fbda14..196d6937 100644
--- a/components/enterprise/connectors/core/common.h
+++ b/components/enterprise/connectors/core/common.h
@@ -89,6 +89,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Keep this enum in sync with
 // EnterpriseReportingEventType in enums.xml.
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.enterprise.connectors
 enum class EnterpriseReportingEventType {
   kUnknownEvent = 0,
   kPasswordReuseEvent = 1,
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
index 33cd6e3..ba8fa2df 100644
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
@@ -79,17 +79,29 @@
         }
 
         public boolean isEnabled(boolean isInDesktopWindowingMode) {
+            if (!isEnabled()) {
+                return false;
+            }
+
             String featureString = getFieldTrialParamByFeatureAsString(PARAM_NAME);
 
-            // Arbitrary way to enable the feature (e.g. for testing).
-            boolean isEnabled = isEnabled();
             // The feature is supposed to work for desktop windowing only.
-            boolean isValidDesktopWindowingMode =
-                    featureString.equals(DESKTOP_WM_FIELD) && isInDesktopWindowingMode;
-            // The feature is supposed to work independently of windowing mode.
-            boolean isValidAllWindowingMode = featureString.equals(ALL_WM_FIELD);
+            if (featureString.equals(DESKTOP_WM_FIELD) && isInDesktopWindowingMode) {
+                return true;
+            }
 
-            return isEnabled || isValidDesktopWindowingMode || isValidAllWindowingMode;
+            // The feature is supposed to work independently of windowing mode.
+            if (featureString.equals(ALL_WM_FIELD)) {
+                return true;
+            }
+
+            // Enabled for testing. Also corresponds to the "Enabled" option in chrome://flags.
+            if (featureString.isEmpty()) {
+                return true;
+            }
+
+            // Feature is enabled but a wrong param was specified.
+            return false;
         }
     }
 }
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc
index 5c8945ac..7fe626f 100644
--- a/components/feature_engagement/public/feature_constants.cc
+++ b/components/feature_engagement/public/feature_constants.cc
@@ -98,8 +98,8 @@
     IPHExtensionsZeroStatePromoVariant,
     kIPHExtensionsZeroStatePromoVariantParam,
     &feature_engagement::kIPHExtensionsZeroStatePromoFeature,
-    "iph-variant",
-    IPHExtensionsZeroStatePromoVariant::kCustomUiChipIph,
+    "x_iph-variant",
+    IPHExtensionsZeroStatePromoVariant::kCustomActionIph,
     &kIPHExtensionsZeroStatePromoVariantOptions);
 #endif
 BASE_FEATURE(kIPHFocusHelpBubbleScreenReaderPromoFeature,
diff --git a/components/live_caption/views/translation_view_wrapper_base.cc b/components/live_caption/views/translation_view_wrapper_base.cc
index 781ed122..f26ca9ad 100644
--- a/components/live_caption/views/translation_view_wrapper_base.cc
+++ b/components/live_caption/views/translation_view_wrapper_base.cc
@@ -7,6 +7,8 @@
 #include <cstddef>
 #include <memory>
 
+#include "base/check.h"
+#include "base/check_op.h"
 #include "base/feature_list.h"
 #include "components/language/core/common/language_util.h"
 #include "components/live_caption/caption_bubble_settings.h"
@@ -33,17 +35,25 @@
 #include "ui/views/view.h"
 
 namespace captions {
+namespace {
 
-class LanguageTextButton : public views::MdTextButton {
+void InitButton(views::MdTextButton* button, views::Label* label) {
+  button->SetCustomPadding(kLanguageButtonInsets);
+  label->SetMultiLine(false);
+  button->SetImageLabelSpacing(kLanguageButtonImageLabelSpacing);
+  button->SetBgColorIdOverride(ui::kColorLiveCaptionBubbleButtonBackground);
+  button->SetPaintToLayer();
+}
+
+}  // namespace
+
+class LanguageTextButton : public views::MdTextButton,
+                           public TranslationViewWrapperBase::LanguageButton {
   METADATA_HEADER(LanguageTextButton, views::MdTextButton)
  public:
   explicit LanguageTextButton(views::MdTextButton::PressedCallback callback)
       : views::MdTextButton(std::move(callback)) {
-    SetCustomPadding(kLanguageButtonInsets);
-    label()->SetMultiLine(false);
-    SetImageLabelSpacing(kLanguageButtonImageLabelSpacing);
-    SetBgColorIdOverride(ui::kColorLiveCaptionBubbleButtonBackground);
-    SetPaintToLayer();
+    InitButton(GetMdTextButton(), GetLabel());
   }
 
   LanguageTextButton(const LanguageTextButton&) = delete;
@@ -54,28 +64,24 @@
     return ui::mojom::CursorType::kHand;
   }
 
-  void SetTextScaleFactor(double text_scale_factor) {
-    SetFocusRingCornerRadius(text_scale_factor * kLineHeightDip / 2);
-  }
+  views::MdTextButton* GetMdTextButton() override { return this; }
 
-  views::Label* GetLabel() { return label(); }
+  views::Label* GetLabel() override { return label(); }
 };
 
 BEGIN_METADATA(LanguageTextButton)
 END_METADATA
 
-class LanguageDropdownButton : public views::MdTextButtonWithDownArrow {
+class LanguageDropdownButton
+    : public views::MdTextButtonWithDownArrow,
+      public TranslationViewWrapperBase::LanguageButton {
   METADATA_HEADER(LanguageDropdownButton, views::MdTextButtonWithDownArrow)
  public:
   LanguageDropdownButton(
       views::MdTextButtonWithDownArrow::PressedCallback callback,
       std::u16string label_text)
       : views::MdTextButtonWithDownArrow(std::move(callback), label_text) {
-    SetCustomPadding(kLanguageButtonInsets);
-    label()->SetMultiLine(false);
-    SetImageLabelSpacing(kLanguageButtonImageLabelSpacing);
-    SetBgColorIdOverride(ui::kColorLiveCaptionBubbleButtonBackground);
-    SetPaintToLayer();
+    InitButton(GetMdTextButton(), GetLabel());
   }
 
   LanguageDropdownButton(const LanguageDropdownButton&) = delete;
@@ -86,11 +92,9 @@
     return ui::mojom::CursorType::kHand;
   }
 
-  void SetTextScaleFactor(double text_scale_factor) {
-    SetFocusRingCornerRadius(text_scale_factor * kLineHeightDip / 2);
-  }
+  views::MdTextButton* GetMdTextButton() override { return this; }
 
-  views::Label* GetLabel() { return label(); }
+  views::Label* GetLabel() override { return label(); }
 };
 
 BEGIN_METADATA(LanguageDropdownButton)
@@ -134,29 +138,24 @@
   translation_header_text_ =
       translate_indicator_container->AddChildView(std::move(translation_text));
 
-  auto source_language_button =
-      std::make_unique<LanguageTextButton>(base::BindRepeating(
-          &TranslationViewWrapperBase::OnSourceLanguageButtonPressed,
-          base::Unretained(this)));
-  source_language_button->GetViewAccessibility().SetIsIgnored(true);
-  auto target_language_button = std::make_unique<LanguageDropdownButton>(
-      base::BindRepeating(
-          &TranslationViewWrapperBase::OnTargetLanguageButtonPressed,
-          base::Unretained(this)),
-      target_language_text_);
-  target_language_button->GetViewAccessibility().SetIsIgnored(true);
-
   source_language_text_ = GetSourceLanguageName();
   target_language_text_ = GetTargetLanguageName();
 
   translate_indicator_container_ = translate_container->AddChildView(
       std::move(translate_indicator_container));
-  source_language_button_ =
-      translate_container->AddChildView(std::move(source_language_button));
+  source_language_button_index_ = AddLanguageTextButton(
+      translate_container,
+      base::BindRepeating(
+          &TranslationViewWrapperBase::OnSourceLanguageButtonPressed,
+          base::Unretained(this)));
   translate_arrow_icon_ =
       translate_container->AddChildView(std::make_unique<views::ImageView>());
-  target_language_button_ =
-      translate_container->AddChildView(std::move(target_language_button));
+  target_language_button_index_ = AddLanguageDropdownButton(
+      translate_container,
+      base::BindRepeating(
+          &TranslationViewWrapperBase::OnTargetLanguageButtonPressed,
+          base::Unretained(this)),
+      target_language_text_);
 
   translation_menu_model_ = std::make_unique<ui::SimpleMenuModel>(this);
   // Add 1 to account for unknown language option at index 0 in
@@ -167,13 +166,18 @@
     translation_menu_model_->AddCheckItem(
         i, translate_ui_languages_manager_->GetLanguageNameAt(i));
   }
+  MaybeAddChildViews(translate_container);
   UpdateLanguageLabel();
   delegate_->UpdateLanguageDirection(GetDisplayLanguage());
 }
 
 std::vector<raw_ptr<views::View, VectorExperimental>>
 TranslationViewWrapperBase::GetButtons() {
-  return {source_language_button_.get(), target_language_button_.get()};
+  std::vector<raw_ptr<views::View, VectorExperimental>> buttons;
+  for (auto& language_button : language_buttons_) {
+    buttons.push_back(language_button->GetMdTextButton());
+  }
+  return buttons;
 }
 
 void TranslationViewWrapperBase::SetTextSizeAndFontFamily(
@@ -182,41 +186,36 @@
   translation_header_text_->SetLineHeight(kLiveTranslateLabelLineHeightDip *
                                           text_scale_factor);
   translation_header_text_->SetFontList(font_list);
-  source_language_button_->GetLabel()->SetLineHeight(
-      kLiveTranslateLabelLineHeightDip * text_scale_factor);
-  source_language_button_->GetLabel()->SetFontList(font_list);
-  source_language_button_->SetTextScaleFactor(text_scale_factor);
-  target_language_button_->GetLabel()->SetLineHeight(
-      kLiveTranslateLabelLineHeightDip * text_scale_factor);
-  target_language_button_->GetLabel()->SetFontList(font_list);
-  target_language_button_->SetTextScaleFactor(text_scale_factor);
+  for (auto& language_button : language_buttons_) {
+    language_button->GetLabel()->SetLineHeight(
+        kLiveTranslateLabelLineHeightDip * text_scale_factor);
+    language_button->GetLabel()->SetFontList(font_list);
+    language_button->GetMdTextButton()->SetFocusRingCornerRadius(
+        text_scale_factor * kLineHeightDip / 2);
+  }
 }
 
 void TranslationViewWrapperBase::SetTextColor(
     SkColor language_label_color,
     SkColor language_label_border_color,
     SkColor header_color) {
-  source_language_button_->SetEnabledTextColors(language_label_color);
-  target_language_button_->SetEnabledTextColors(language_label_color);
+  for (auto& language_button : language_buttons_) {
+    views::MdTextButton* const button = language_button->GetMdTextButton();
+    button->SetEnabledTextColors(language_label_color);
 // On macOS whenever the caption bubble is not in main focus the button state
 // is set to disabled. These buttons are never disabled so it is okay to
 // override this state.
 #if BUILDFLAG(IS_MAC)
-  source_language_button_->SetTextColor(views::Button::STATE_DISABLED,
-                                        language_label_color);
-  target_language_button_->SetTextColor(views::Button::STATE_DISABLED,
-                                        language_label_color);
+    button->SetTextColor(views::Button::STATE_DISABLED, language_label_color);
 #endif
-  // TODO(crbug.com/40259212): The live caption bubble allows users to set
-  // their own color and alpha value from a predefined list. This SKColor is
-  // calculated during  ParseNonTransparentRGBACSSColorString, however the
-  // equivalent ui::ColorId may not exist. To avoid needing to define around
-  // 40 new color ids to account for each combination, we use the deprecated
-  // SKColor function.
-  source_language_button_->SetStrokeColorOverrideDeprecated(
-      language_label_border_color);
-  target_language_button_->SetStrokeColorOverrideDeprecated(
-      language_label_border_color);
+    // TODO(crbug.com/40259212): The live caption bubble allows users to set
+    // their own color and alpha value from a predefined list. This SKColor is
+    // calculated during  ParseNonTransparentRGBACSSColorString, however the
+    // equivalent ui::ColorId may not exist. To avoid needing to define around
+    // 40 new color ids to account for each combination, we use the deprecated
+    // SKColor function.
+    button->SetStrokeColorOverrideDeprecated(language_label_border_color);
+  }
   translation_header_text_->SetEnabledColor(header_color);
   translate_icon_->SetImage(ui::ImageModel::FromVectorIcon(
       vector_icons::kTranslateIcon, header_color, kLiveTranslateImageWidthDip));
@@ -228,37 +227,14 @@
 }
 
 void TranslationViewWrapperBase::UpdateLanguageLabel() {
-  const bool live_translate_enabled =
-      caption_bubble_settings()->IsLiveTranslateFeatureEnabled();
   // We update the language text and set it whenever live translate OR
   // multilingual live captions are enabled. We early out when both are
   // disabled.
-  if (!live_translate_enabled &&
+  if (!caption_bubble_settings()->IsLiveTranslateFeatureEnabled() &&
       !base::FeatureList::IsEnabled(media::kLiveCaptionMultiLanguage)) {
     return;
   }
-
-  CHECK(source_language_button_ != nullptr);
-  if (auto_detected_source_language_) {
-    source_language_button_->SetText(l10n_util::GetStringFUTF16(
-        IDS_LIVE_CAPTION_CAPTION_LANGUAGE_AUTODETECTED, source_language_text_));
-  } else {
-    source_language_button_->SetText(source_language_text_);
-  }
-
-  if (live_translate_enabled &&
-      caption_bubble_settings()->GetLiveTranslateEnabled()) {
-    if (SourceAndTargetLanguageCodeMatch() && auto_detected_source_language_) {
-      target_language_button_->SetText(l10n_util::GetStringFUTF16(
-          IDS_LIVE_CAPTION_CAPTION_LANGUAGE_AUTODETECTED,
-          target_language_text_));
-    } else {
-      target_language_button_->SetText(target_language_text_);
-    }
-    SetTranslationsViewVisible(true);
-  } else {
-    SetTranslationsViewVisible(false);
-  }
+  UpdateLanguageLabelInternal();
 }
 
 void TranslationViewWrapperBase::OnAutoDetectedLanguageChanged(
@@ -278,30 +254,31 @@
 }
 
 void TranslationViewWrapperBase::UpdateContentSize() {
-  source_language_button_->SetMinSize(gfx::Size());
-  source_language_button_->SetPreferredSize(
-      source_language_button_->CalculatePreferredSize({}));
-  target_language_button_->SetMinSize(gfx::Size());
-  target_language_button_->SetPreferredSize(
-      target_language_button_->CalculatePreferredSize({}));
+  for (auto& language_button : language_buttons_) {
+    views::MdTextButton* const button = language_button->GetMdTextButton();
+    button->SetMinSize(gfx::Size());
+    button->SetPreferredSize(button->CalculatePreferredSize({}));
+  }
 }
 
 views::Label* TranslationViewWrapperBase::GetSourceLanguageLabelForTesting() {
-  return views::AsViewClass<views::Label>(source_language_button_->GetLabel());
+  return views::AsViewClass<views::Label>(
+      language_buttons_[source_language_button_index_]->GetLabel());
 }
 
 views::Label* TranslationViewWrapperBase::GetTargetLanguageLabelForTesting() {
-  return views::AsViewClass<views::Label>(target_language_button_->GetLabel());
+  return views::AsViewClass<views::Label>(
+      language_buttons_[target_language_button_index_]->GetLabel());
 }
 
 views::MdTextButton*
 TranslationViewWrapperBase::GetSourceLanguageButtonForTesting() {
-  return source_language_button_.get();
+  return source_language_button();
 }
 
 views::MdTextButton*
 TranslationViewWrapperBase::GetTargetLanguageButtonForTesting() {
-  return target_language_button_.get();
+  return target_language_button();
 }
 
 views::View* TranslationViewWrapperBase::GetTranslateIconAndTextForTesting() {
@@ -323,9 +300,72 @@
   }
 }
 
+void TranslationViewWrapperBase::MaybeAddChildViews(
+    views::View* translate_container) {}
+
+void TranslationViewWrapperBase::UpdateLanguageLabelInternal() {
+  if (auto_detected_source_language_) {
+    source_language_button()->SetText(l10n_util::GetStringFUTF16(
+        IDS_LIVE_CAPTION_CAPTION_LANGUAGE_AUTODETECTED, source_language_text_));
+  } else {
+    source_language_button()->SetText(source_language_text_);
+  }
+
+  if (caption_bubble_settings()->IsLiveTranslateFeatureEnabled() &&
+      caption_bubble_settings()->GetLiveTranslateEnabled()) {
+    if (SourceAndTargetLanguageCodeMatch() && auto_detected_source_language_) {
+      target_language_button()->SetText(l10n_util::GetStringFUTF16(
+          IDS_LIVE_CAPTION_CAPTION_LANGUAGE_AUTODETECTED,
+          target_language_text_));
+    } else {
+      target_language_button()->SetText(target_language_text_);
+    }
+    SetTranslationsViewVisible(true);
+  } else {
+    SetTranslationsViewVisible(false);
+  }
+}
+
+int TranslationViewWrapperBase::AddLanguageTextButton(
+    views::View* translate_container,
+    views::MdTextButton::PressedCallback callback) {
+  auto language_button =
+      std::make_unique<LanguageTextButton>(std::move(callback));
+  language_button->GetMdTextButton()->GetViewAccessibility().SetIsIgnored(true);
+  language_buttons_.push_back(
+      translate_container->AddChildView(std::move(language_button)));
+  return language_buttons_.size() - 1;
+}
+
+int TranslationViewWrapperBase::AddLanguageDropdownButton(
+    views::View* translate_container,
+    views::MdTextButtonWithDownArrow::PressedCallback callback,
+    const std::u16string& label_text) {
+  auto language_button =
+      std::make_unique<LanguageDropdownButton>(std::move(callback), label_text);
+  language_button->GetMdTextButton()->GetViewAccessibility().SetIsIgnored(true);
+  language_buttons_.push_back(
+      translate_container->AddChildView(std::move(language_button)));
+  return language_buttons_.size() - 1;
+}
+
+views::MdTextButton* TranslationViewWrapperBase::button(int index) const {
+  return language_buttons_.at(index)->GetMdTextButton();
+}
+
+views::MdTextButton* TranslationViewWrapperBase::source_language_button()
+    const {
+  return button(source_language_button_index_);
+}
+
+views::MdTextButton* TranslationViewWrapperBase::target_language_button()
+    const {
+  return button(target_language_button_index_);
+}
+
 void TranslationViewWrapperBase::SetTranslationsViewVisible(
     bool live_translate_enabled) {
-  target_language_button_->SetVisible(live_translate_enabled);
+  target_language_button()->SetVisible(live_translate_enabled);
   translate_indicator_container_->SetVisible(live_translate_enabled);
   translate_arrow_icon_->SetVisible(live_translate_enabled);
 
@@ -336,9 +376,9 @@
     const bool sourceMatchesTarget = SourceAndTargetLanguageCodeMatch();
     translate_indicator_container_->SetVisible(!sourceMatchesTarget);
     translate_arrow_icon_->SetVisible(!sourceMatchesTarget);
-    source_language_button_->SetVisible(!sourceMatchesTarget);
+    source_language_button()->SetVisible(!sourceMatchesTarget);
   } else {
-    source_language_button_->SetVisible(true);
+    source_language_button()->SetVisible(true);
   }
 }
 
@@ -397,9 +437,10 @@
 void TranslationViewWrapperBase::OnTargetLanguageButtonPressed() {
   translation_menu_runner_ = std::make_unique<views::MenuRunner>(
       translation_menu_model_.get(), views::MenuRunner::COMBOBOX);
-  const gfx::Rect& screen_bounds = target_language_button_->GetBoundsInScreen();
+  const gfx::Rect& screen_bounds =
+      target_language_button()->GetBoundsInScreen();
   translation_menu_runner_->RunMenuAt(
-      target_language_button_->GetWidget(), /*button_controller=*/nullptr,
+      target_language_button()->GetWidget(), /*button_controller=*/nullptr,
       screen_bounds, views::MenuAnchorPosition::kTopLeft,
       ui::mojom::MenuSourceType::kMouse);
 }
diff --git a/components/live_caption/views/translation_view_wrapper_base.h b/components/live_caption/views/translation_view_wrapper_base.h
index 670f1ef..db71cb6 100644
--- a/components/live_caption/views/translation_view_wrapper_base.h
+++ b/components/live_caption/views/translation_view_wrapper_base.h
@@ -14,6 +14,8 @@
 #include "base/memory/weak_ptr.h"
 #include "components/live_caption/caption_bubble_settings.h"
 #include "ui/menus/simple_menu_model.h"
+#include "ui/views/controls/button/md_text_button.h"
+#include "ui/views/controls/button/md_text_button_with_down_arrow.h"
 #include "ui/views/controls/menu/menu_runner.h"
 
 namespace gfx {
@@ -27,7 +29,6 @@
 namespace views {
 class ImageView;
 class Label;
-class MdTextButton;
 class View;
 class MenuRunner;
 
@@ -35,9 +36,6 @@
 
 namespace captions {
 
-class LanguageTextButton;
-class LanguageDropdownButton;
-
 class TranslationViewWrapperBase : public ui::SimpleMenuModel::Delegate,
                                    public CaptionBubbleSettings::Observer {
  public:
@@ -57,6 +55,19 @@
     Delegate() = default;
   };
 
+  class LanguageButton {
+   public:
+    LanguageButton() = default;
+
+    LanguageButton(const LanguageButton&) = delete;
+    LanguageButton& operator=(const LanguageButton&) = delete;
+
+    virtual ~LanguageButton() = default;
+
+    virtual views::MdTextButton* GetMdTextButton() = 0;
+    virtual views::Label* GetLabel() = 0;
+  };
+
   TranslationViewWrapperBase(const TranslationViewWrapperBase&) = delete;
   TranslationViewWrapperBase& operator=(const TranslationViewWrapperBase&) =
       delete;
@@ -93,8 +104,24 @@
 
   virtual CaptionBubbleSettings* caption_bubble_settings() = 0;
 
+  virtual void MaybeAddChildViews(views::View* translate_container);
+
+  virtual void UpdateLanguageLabelInternal();
+
+  virtual void SetTranslationsViewVisible(bool live_translate_enabled);
+
+  int AddLanguageTextButton(views::View* translate_container,
+                            views::MdTextButton::PressedCallback callback);
+
+  views::MdTextButton* button(int index) const;
+  views::MdTextButton* source_language_button() const;
+  views::MdTextButton* target_language_button() const;
+
  private:
-  void SetTranslationsViewVisible(bool live_translate_enabled);
+  int AddLanguageDropdownButton(
+      views::View* translate_container,
+      views::MdTextButtonWithDownArrow::PressedCallback callback,
+      const std::u16string& label_text);
 
   // ui::SimpleMenuModelDelegate:
   void ExecuteCommand(int target_language_code_index, int event_flags) override;
@@ -124,8 +151,9 @@
       translate_ui_languages_manager_;
 
   raw_ptr<views::Label> translation_header_text_;
-  raw_ptr<LanguageTextButton> source_language_button_;
-  raw_ptr<LanguageDropdownButton> target_language_button_;
+  int source_language_button_index_ = -1;
+  int target_language_button_index_ = -1;
+  std::vector<LanguageButton*> language_buttons_;
   raw_ptr<views::ImageView> translate_icon_;
   raw_ptr<views::View> translate_indicator_container_;
   std::u16string source_language_text_;
diff --git a/components/metrics/dwa/dwa_service.cc b/components/metrics/dwa/dwa_service.cc
index 1b466bd..89bb8f4 100644
--- a/components/metrics/dwa/dwa_service.cc
+++ b/components/metrics/dwa/dwa_service.cc
@@ -61,8 +61,8 @@
         "uk",  // United Kingdom
     });
 
-// Number of seconds in a week or seven days. (604800 = 7 * 24 * 60 * 60)
-const int kOneWeekInSeconds = base::Days(7).InSeconds();
+// One week or seven days represented in base::TimeDelta.
+const base::TimeDelta kOneWeek = base::Days(7);
 
 const size_t kMinLogQueueCount = 10;
 const size_t kMinLogQueueSizeBytes = 300 * 1024;  // 300 KiB
@@ -190,11 +190,11 @@
         ::dwa::CoarseSystemInfo::GEO_DESIGNATION_ROW);
   }
 
-  int64_t seconds_since_install =
-      MetricsLog::GetCurrentTime() -
-      local_state.GetInt64(metrics::prefs::kInstallDate);
+  base::TimeDelta time_since_install =
+      base::Time::Now() -
+      base::Time::FromTimeT(local_state.GetInt64(metrics::prefs::kInstallDate));
   coarse_system_info->set_client_age(
-      seconds_since_install < kOneWeekInSeconds
+      time_since_install < kOneWeek
           ? ::dwa::CoarseSystemInfo::CLIENT_AGE_RECENT
           : ::dwa::CoarseSystemInfo::CLIENT_AGE_NOT_RECENT);
 
diff --git a/components/omnibox/browser/autocomplete_classifier.cc b/components/omnibox/browser/autocomplete_classifier.cc
index 27dfe1c..032936ce 100644
--- a/components/omnibox/browser/autocomplete_classifier.cc
+++ b/components/omnibox/browser/autocomplete_classifier.cc
@@ -62,7 +62,7 @@
                .show_recently_closed_tabs
            ? AutocompleteProvider::TYPE_RECENTLY_CLOSED_TABS
            : 0) |
-      (omnibox_feature_configs::ContextualSearch::Get().starter_pack_page
+      (omnibox_feature_configs::ContextualSearch::Get().show_open_lens_action
            ? AutocompleteProvider::TYPE_CONTEXTUAL_SEARCH
            : 0) |
 #else
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
index f0538b3..f60b6c7 100644
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -70,6 +70,7 @@
 #include "components/omnibox/browser/local_history_zero_suggest_provider.h"
 #include "components/omnibox/browser/most_visited_sites_provider.h"
 #include "components/omnibox/browser/omnibox_field_trial.h"
+#include "components/omnibox/browser/omnibox_prefs.h"
 #include "components/omnibox/browser/on_device_head_provider.h"
 #include "components/omnibox/browser/open_tab_provider.h"
 #include "components/omnibox/browser/page_classification_functions.h"
@@ -1442,19 +1443,22 @@
   // suggestions shouldn't be shown.
   const bool is_lens_active =
       !autocomplete_provider_client()->AreLensEntrypointsVisible();
+  bool mia_enabled =
+      omnibox_feature_configs::MiaZPS::Get().enabled &&
+      !omnibox::IsMiaDisabledByPolicy(provider_client_->GetPrefs());
   if (update_type == UpdateType::kSyncPass ||
       update_type == UpdateType::kAsyncPass ||
       update_type == UpdateType::kLastAsyncPassExceptDoc) {
-    internal_result_.SortAndCull(input_, template_url_service_,
-                                 triggered_feature_service_, is_lens_active,
-                                 old_result.default_match_to_preserve);
+    internal_result_.SortAndCull(
+        input_, template_url_service_, triggered_feature_service_,
+        is_lens_active, mia_enabled, old_result.default_match_to_preserve);
     internal_result_.TransferOldMatches(input_,
                                         &old_result.matches_to_transfer);
   }
 
-  internal_result_.SortAndCull(input_, template_url_service_,
-                               triggered_feature_service_, is_lens_active,
-                               old_result.default_match_to_preserve);
+  internal_result_.SortAndCull(
+      input_, template_url_service_, triggered_feature_service_, is_lens_active,
+      mia_enabled, old_result.default_match_to_preserve);
 
   if (update_type == UpdateType::kSyncPass) {
     StartExpireTimer();
@@ -1646,7 +1650,6 @@
   }
 
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
-  // Attach the contextual search fulfillment actions in the @page keyword mode.
   if (omnibox_feature_configs::ContextualSearch::Get()
           .contextual_zero_suggest_lens_fulfillment &&
       input_.IsZeroSuggest()) {
@@ -1656,6 +1659,8 @@
     const TemplateURL* keyword_turl =
         AutocompleteInput::GetSubstitutingTemplateURLForInput(
             template_url_service_, &keyword_input);
+    // Attach the contextual search fulfillment actions in the @page keyword
+    // mode.
     if (keyword_turl->starter_pack_id() == TemplateURLStarterPackData::kPage) {
       internal_result_.AttachContextualSearchFulfillmentActionToMatches();
       return;
diff --git a/components/omnibox/browser/autocomplete_grouper_sections.cc b/components/omnibox/browser/autocomplete_grouper_sections.cc
index 2d8ba69e..36109b90 100644
--- a/components/omnibox/browser/autocomplete_grouper_sections.cc
+++ b/components/omnibox/browser/autocomplete_grouper_sections.cc
@@ -303,7 +303,8 @@
           group_configs) {}
 
 AndroidNTPZpsSection::AndroidNTPZpsSection(
-    omnibox::GroupConfigMap& group_configs)
+    omnibox::GroupConfigMap& group_configs,
+    bool mia_enabled)
     : ZpsSectionWithLocalHistory(
           30,
           {
@@ -315,14 +316,14 @@
                     {
                         {
                             omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA,
-                            omnibox_feature_configs::MiaZPS::Get().enabled
+                            mia_enabled
                                 ? OmniboxFieldTrial::
                                       kOmniboxNumNtpZpsRecentSearches.Get()
                                 : 0,
                         },
                         {
                             omnibox::GROUP_MIA_RECOMMENDATIONS,
-                            omnibox_feature_configs::MiaZPS::Get().enabled
+                            mia_enabled
                                 ? OmniboxFieldTrial::
                                       kOmniboxNumNtpZpsRecentSearches.Get()
                                 : 0,
@@ -404,7 +405,8 @@
 
 DesktopNTPZpsSection::DesktopNTPZpsSection(
     omnibox::GroupConfigMap& group_configs,
-    size_t limit)
+    size_t limit,
+    bool mia_enabled)
     : ZpsSectionWithLocalHistory(
           limit,
           {
@@ -412,9 +414,8 @@
                   8,
                   {
                       {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA,
-                       omnibox_feature_configs::MiaZPS::Get().enabled ? 8 : 0},
-                      {omnibox::GROUP_MIA_RECOMMENDATIONS,
-                       omnibox_feature_configs::MiaZPS::Get().enabled ? 8 : 0},
+                       mia_enabled ? 8 : 0},
+                      {omnibox::GROUP_MIA_RECOMMENDATIONS, mia_enabled ? 8 : 0},
                       {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST, 8},
                   }),
               Group(8,
@@ -687,7 +688,8 @@
   ZpsSection::InitFromMatches(matches);
 }
 
-IOSNTPZpsSection::IOSNTPZpsSection(omnibox::GroupConfigMap& group_configs)
+IOSNTPZpsSection::IOSNTPZpsSection(omnibox::GroupConfigMap& group_configs,
+                                   bool mia_enabled)
     : ZpsSectionWithLocalHistory(
           26,
           {
@@ -695,15 +697,14 @@
                     {
                         {omnibox::GROUP_MOBILE_CLIPBOARD, 1},
                     }),
-              Group(
-                  20,
-                  {
-                      {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA,
-                       omnibox_feature_configs::MiaZPS::Get().enabled ? 20 : 0},
-                      {omnibox::GROUP_MIA_RECOMMENDATIONS,
-                       omnibox_feature_configs::MiaZPS::Get().enabled ? 20 : 0},
-                      {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST, 20},
-                  }),
+              Group(20,
+                    {
+                        {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA,
+                         mia_enabled ? 20 : 0},
+                        {omnibox::GROUP_MIA_RECOMMENDATIONS,
+                         mia_enabled ? 20 : 0},
+                        {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST, 20},
+                    }),
               Group(5,
                     {
                         {omnibox::GROUP_TRENDS, 5},
@@ -781,7 +782,8 @@
 IOSIpadNTPZpsSection::IOSIpadNTPZpsSection(
     size_t trends_count,
     size_t total_count,
-    omnibox::GroupConfigMap& group_configs)
+    omnibox::GroupConfigMap& group_configs,
+    bool mia_enabled)
     : ZpsSectionWithLocalHistory(
           total_count,
           {
@@ -793,15 +795,11 @@
                     {
                         {
                             omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA,
-                            omnibox_feature_configs::MiaZPS::Get().enabled
-                                ? total_count - trends_count - 1
-                                : 0,
+                            mia_enabled ? total_count - trends_count - 1 : 0,
                         },
                         {
                             omnibox::GROUP_MIA_RECOMMENDATIONS,
-                            omnibox_feature_configs::MiaZPS::Get().enabled
-                                ? total_count - trends_count - 1
-                                : 0,
+                            mia_enabled ? total_count - trends_count - 1 : 0,
                         },
                         {omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST,
                          total_count - trends_count - 1},
diff --git a/components/omnibox/browser/autocomplete_grouper_sections.h b/components/omnibox/browser/autocomplete_grouper_sections.h
index af6c1a76..aff07a5 100644
--- a/components/omnibox/browser/autocomplete_grouper_sections.h
+++ b/components/omnibox/browser/autocomplete_grouper_sections.h
@@ -138,7 +138,8 @@
 //  - up to 5 trending search suggestions.
 class AndroidNTPZpsSection : public ZpsSectionWithLocalHistory {
  public:
-  explicit AndroidNTPZpsSection(omnibox::GroupConfigMap& group_configs);
+  AndroidNTPZpsSection(omnibox::GroupConfigMap& group_configs,
+                       bool mia_enabled);
 };
 
 // Section expressing the Android ZPS limits and grouping for the SRP.
@@ -172,8 +173,9 @@
 //  - up to 8 trending search suggestions.
 class DesktopNTPZpsSection : public ZpsSectionWithLocalHistory {
  public:
-  explicit DesktopNTPZpsSection(omnibox::GroupConfigMap& group_configs,
-                                size_t limit);
+  DesktopNTPZpsSection(omnibox::GroupConfigMap& group_configs,
+                       size_t limit,
+                       bool mia_enabled);
 };
 
 // Section expressing the Desktop ZPS limits and grouping for unscoped
@@ -284,7 +286,7 @@
 //  - up to `max_trending_queries` trending suggestions.
 class IOSNTPZpsSection : public ZpsSectionWithLocalHistory {
  public:
-  explicit IOSNTPZpsSection(omnibox::GroupConfigMap& group_configs);
+  IOSNTPZpsSection(omnibox::GroupConfigMap& group_configs, bool mia_enabled);
 };
 
 // Section expressing the iPhone ZPS limits and grouping for the SRP.
@@ -328,7 +330,8 @@
  public:
   explicit IOSIpadNTPZpsSection(size_t trends_count,
                                 size_t total_count,
-                                omnibox::GroupConfigMap& group_configs);
+                                omnibox::GroupConfigMap& group_configs,
+                                bool mia_enabled);
 };
 
 // Section expressing the iPad ZPS limits and grouping for the SRP.
diff --git a/components/omnibox/browser/autocomplete_grouper_sections_unittest.cc b/components/omnibox/browser/autocomplete_grouper_sections_unittest.cc
index 74b0b3e2..3fa02d28 100644
--- a/components/omnibox/browser/autocomplete_grouper_sections_unittest.cc
+++ b/components/omnibox/browser/autocomplete_grouper_sections_unittest.cc
@@ -157,7 +157,7 @@
     PSections sections;
     omnibox::GroupConfigMap group_configs;
     sections.push_back(
-        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u));
+        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u, false));
     auto out_matches = Section::GroupMatches(std::move(sections), matches);
     VerifyMatches(out_matches, expected_relevances);
   };
@@ -279,6 +279,7 @@
 // Tests the groups, limits, and rules for the Desktop NTP ZPS section.
 TEST(AutocompleteGrouperSectionsTest, DesktopNTPZpsSectionWithMIA) {
   auto test = [](std::vector<std::pair<int, omnibox::GroupId>> input,
+                 bool mia_enabled,
                  std::vector<std::pair<int, omnibox::GroupId>> output) {
     ACMatches in_matches;
     for (const auto& [relevance, group_id] : input) {
@@ -287,7 +288,7 @@
     PSections sections;
     omnibox::GroupConfigMap group_configs;
     sections.push_back(
-        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u));
+        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u, mia_enabled));
     auto out_matches = Section::GroupMatches(std::move(sections), in_matches);
     VerifyMatches(out_matches, output);
   };
@@ -295,10 +296,6 @@
   {
     SCOPED_TRACE(
         "MIA above pSuggest - local history zps takes precedence over Trends.");
-    omnibox_feature_configs::ScopedConfigForTesting<
-        omnibox_feature_configs::MiaZPS>
-        scoped_config;
-    scoped_config.Get().enabled = true;
     test(
         {
             // `GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA` and
@@ -324,6 +321,7 @@
             {48, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {47, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
         },
+        /*mia_enabled=*/true,
         {
             {90, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
             {89, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
@@ -339,10 +337,6 @@
     SCOPED_TRACE(
         "MIA below pSuggest - Local history zps is grouped with pSuggest but "
         "doesn't take precedence over non-Trends.");
-    omnibox_feature_configs::ScopedConfigForTesting<
-        omnibox_feature_configs::MiaZPS>
-        scoped_config;
-    scoped_config.Get().enabled = true;
     test(
         {
             // remote `GROUP_PERSONALIZED_ZERO_SUGGEST` should all be added.
@@ -367,6 +361,7 @@
             {48, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {47, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
         },
+        /*mia_enabled=*/true,
         {
             {90, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {89, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
@@ -382,10 +377,6 @@
     SCOPED_TRACE(
         "MIA and no pSuggest - Local history zps doesn't take precedence over "
         "non-Trends.");
-    omnibox_feature_configs::ScopedConfigForTesting<
-        omnibox_feature_configs::MiaZPS>
-        scoped_config;
-    scoped_config.Get().enabled = true;
     test(
         {
             // `GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA` and
@@ -408,6 +399,7 @@
             {48, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {47, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
         },
+        /*mia_enabled=*/true,
         {
             {90, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
             {89, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
@@ -423,10 +415,6 @@
     SCOPED_TRACE(
         "MIA and no pSuggest - Local history zps added but doesn't take "
         "precedence over non-Trends.");
-    omnibox_feature_configs::ScopedConfigForTesting<
-        omnibox_feature_configs::MiaZPS>
-        scoped_config;
-    scoped_config.Get().enabled = true;
     test(
         {
             // `GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA` and
@@ -449,6 +437,7 @@
             {48, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {47, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
         },
+        /*mia_enabled=*/true,
         {
             {90, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
             {89, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST_WITH_MIA},
@@ -462,10 +451,6 @@
   }
   {
     SCOPED_TRACE("MIA is not added if feature is disabled.");
-    omnibox_feature_configs::ScopedConfigForTesting<
-        omnibox_feature_configs::MiaZPS>
-        scoped_config;
-    scoped_config.Get().enabled = false;
     test(
         {
             // remote `GROUP_PERSONALIZED_ZERO_SUGGEST` should all be added.
@@ -485,6 +470,7 @@
             // local `GROUP_PERSONALIZED_ZERO_SUGGEST` should be added.
             {50, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
         },
+        /*mia_enabled=*/false,
         {
             {90, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
             {89, omnibox::GROUP_PERSONALIZED_ZERO_SUGGEST},
@@ -506,7 +492,7 @@
     PSections sections;
     omnibox::GroupConfigMap group_configs;
     sections.push_back(
-        std::make_unique<DesktopNTPZpsSection>(group_configs, 7u));
+        std::make_unique<DesktopNTPZpsSection>(group_configs, 7u, false));
     sections.push_back(
         std::make_unique<DesktopNTPZpsIPHSection>(group_configs));
     auto out_matches = Section::GroupMatches(std::move(sections), matches);
@@ -1327,7 +1313,8 @@
 
     PSections sections;
     omnibox::GroupConfigMap group_configs;
-    sections.push_back(std::make_unique<AndroidNTPZpsSection>(group_configs));
+    sections.push_back(
+        std::make_unique<AndroidNTPZpsSection>(group_configs, false));
     auto out_matches = Section::GroupMatches(std::move(sections), matches);
     VerifyMatches(out_matches, expected_relevances);
   };
@@ -1570,7 +1557,8 @@
   auto test = [](ACMatches matches, std::vector<int> expected_relevances) {
     PSections sections;
     omnibox::GroupConfigMap group_configs;
-    sections.push_back(std::make_unique<IOSNTPZpsSection>(group_configs));
+    sections.push_back(
+        std::make_unique<IOSNTPZpsSection>(group_configs, false));
     auto out_matches = Section::GroupMatches(std::move(sections), matches);
     VerifyMatches(out_matches, expected_relevances);
   };
@@ -1753,7 +1741,7 @@
     group_configs[group4].set_side_type(
         omnibox::GroupConfig_SideType_SECONDARY);
     sections.push_back(
-        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u));
+        std::make_unique<DesktopNTPZpsSection>(group_configs, 8u, false));
     sections.push_back(
         std::make_unique<DesktopSecondaryNTPZpsSection>(group_configs));
     auto out_matches = Section::GroupMatches(std::move(sections), matches);
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
index 1db2264..a70ee8b 100644
--- a/components/omnibox/browser/autocomplete_result.cc
+++ b/components/omnibox/browser/autocomplete_result.cc
@@ -391,6 +391,7 @@
     TemplateURLService* template_url_service,
     OmniboxTriggeredFeatureService* triggered_feature_service,
     bool is_lens_active,
+    bool mia_enabled,
     std::optional<AutocompleteMatch> default_match_to_preserve) {
   SCOPED_UMA_HISTOGRAM_TIMER_MICROS(
       "Omnibox.AutocompletionTime.UpdateResult.SortAndCull");
@@ -446,8 +447,8 @@
     PSections sections;
     if constexpr (is_android) {
       if (omnibox::IsNTPPage(page_classification)) {
-        sections.push_back(
-            std::make_unique<AndroidNTPZpsSection>(suggestion_groups_map_));
+        sections.push_back(std::make_unique<AndroidNTPZpsSection>(
+            suggestion_groups_map_, mia_enabled));
       } else if (omnibox::IsSearchResultsPage(page_classification)) {
         sections.push_back(
             std::make_unique<AndroidSRPZpsSection>(suggestion_groups_map_));
@@ -463,8 +464,12 @@
           is_lens_active ? 0u
                          : omnibox_feature_configs::ContextualSearch::Get()
                                .contextual_zps_limit;
+      // Make space for the extra Lens action. It needs to be included above
+      // any contextual search matches but does not count against their limit.
       const size_t contextual_action_limit =
-          contextual_zps_limit > 0u ? 1u : 0u;
+          omnibox_feature_configs::ContextualSearch::Get().show_open_lens_action
+              ? 1u
+              : 0u;
       if (omnibox::IsLensSearchbox(page_classification)) {
         switch (page_classification) {
           case OmniboxEventProto::CONTEXTUAL_SEARCHBOX:
@@ -490,7 +495,7 @@
             page_classification != OmniboxEventProto::NTP_REALBOX &&
             has_iph_match;
         sections.push_back(std::make_unique<DesktopNTPZpsSection>(
-            suggestion_groups_map_, add_iph_section ? 7u : 8u));
+            suggestion_groups_map_, add_iph_section ? 7u : 8u, mia_enabled));
 #if BUILDFLAG(ENABLE_EXTENSIONS)
         // Show unscoped extension suggestions on NTP except in the realbox.
         if (base::FeatureList::IsEnabled(
@@ -538,9 +543,6 @@
         }
 #endif
       } else {
-        // Make space for the extra action when there is any contextual search
-        // budget. It needs to be included above any contextual search matches
-        // but does not count against their limit.
         sections.push_back(std::make_unique<DesktopWebURLZpsSection>(
             suggestion_groups_map_, max_url_suggestions));
         sections.push_back(std::make_unique<DesktopWebSearchZpsSection>(
@@ -564,7 +566,8 @@
 
         if (omnibox::IsNTPPage(page_classification)) {
           sections.push_back(std::make_unique<IOSIpadNTPZpsSection>(
-              num_trending_queries, total_count, suggestion_groups_map_));
+              num_trending_queries, total_count, suggestion_groups_map_,
+              mia_enabled));
         } else if (omnibox::IsSearchResultsPage(page_classification)) {
           sections.push_back(std::make_unique<IOSIpadSRPZpsSection>(
               total_count, suggestion_groups_map_));
@@ -584,8 +587,8 @@
               NOTREACHED(base::NotFatalUntil::M200);
           }
         } else if (omnibox::IsNTPPage(page_classification)) {
-          sections.push_back(
-              std::make_unique<IOSNTPZpsSection>(suggestion_groups_map_));
+          sections.push_back(std::make_unique<IOSNTPZpsSection>(
+              suggestion_groups_map_, mia_enabled));
         } else if (omnibox::IsSearchResultsPage(page_classification)) {
           sections.push_back(
               std::make_unique<IOSSRPZpsSection>(suggestion_groups_map_));
diff --git a/components/omnibox/browser/autocomplete_result.h b/components/omnibox/browser/autocomplete_result.h
index 08c5283..494e4dd2 100644
--- a/components/omnibox/browser/autocomplete_result.h
+++ b/components/omnibox/browser/autocomplete_result.h
@@ -124,6 +124,7 @@
                    TemplateURLService* template_url_service,
                    OmniboxTriggeredFeatureService* triggered_feature_service,
                    bool is_lens_active,
+                   bool mia_enabled = false,
                    std::optional<AutocompleteMatch> default_match_to_preserve =
                        std::nullopt);
 
diff --git a/components/omnibox/browser/autocomplete_result_unittest.cc b/components/omnibox/browser/autocomplete_result_unittest.cc
index 3a0da74..a3ee8b43 100644
--- a/components/omnibox/browser/autocomplete_result_unittest.cc
+++ b/components/omnibox/browser/autocomplete_result_unittest.cc
@@ -1187,7 +1187,7 @@
     // Run SortAndCull, but try to keep the first entry of last_matches on top.
     current_result.SortAndCull(
         input, &template_url_service(), triggered_feature_service(),
-        /*is_lens_active=*/false, *last_result.match_at(0));
+        /*is_lens_active=*/false, false, *last_result.match_at(0));
 
     AssertResultMatches(current_result, expected);
   };
diff --git a/components/omnibox/browser/document_provider.cc b/components/omnibox/browser/document_provider.cc
index 2f70746..0846675 100644
--- a/components/omnibox/browser/document_provider.cc
+++ b/components/omnibox/browser/document_provider.cc
@@ -686,16 +686,25 @@
 // static
 std::u16string DocumentProvider::GetProductDescriptionString(
     const std::string& mimetype) {
-  if (mimetype == kDocumentMimetype)
-    return l10n_util::GetStringUTF16(IDS_DRIVE_SUGGESTION_DOCUMENT);
-  if (mimetype == kFormMimetype)
-    return l10n_util::GetStringUTF16(IDS_DRIVE_SUGGESTION_FORM);
-  if (mimetype == kSpreadsheetMimetype)
-    return l10n_util::GetStringUTF16(IDS_DRIVE_SUGGESTION_SPREADSHEET);
-  if (mimetype == kPresentationMimetype)
-    return l10n_util::GetStringUTF16(IDS_DRIVE_SUGGESTION_PRESENTATION);
+  if (mimetype == kDocumentMimetype) {
+    return l10n_util::GetStringUTF16(
+        IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS);
+  }
+  if (mimetype == kFormMimetype) {
+    return l10n_util::GetStringUTF16(
+        IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS);
+  }
+  if (mimetype == kSpreadsheetMimetype) {
+    return l10n_util::GetStringUTF16(
+        IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS);
+  }
+  if (mimetype == kPresentationMimetype) {
+    return l10n_util::GetStringUTF16(
+        IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES);
+  }
   // Fallback to "Drive" for other filetypes.
-  return l10n_util::GetStringUTF16(IDS_DRIVE_SUGGESTION_GENERAL);
+  return l10n_util::GetStringUTF16(
+      IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE);
 }
 
 // static
diff --git a/components/omnibox/browser/enterprise_search_aggregator_provider.cc b/components/omnibox/browser/enterprise_search_aggregator_provider.cc
index 732431f..ad6d8a2 100644
--- a/components/omnibox/browser/enterprise_search_aggregator_provider.cc
+++ b/components/omnibox/browser/enterprise_search_aggregator_provider.cc
@@ -167,79 +167,80 @@
   const std::string_view file_type_description;
 };
 
-// A mapping from `mime_type` to the human readable `file_type_description`.
+// A mapping from `mime_type` to the human readable `file_type_description` for
+// selected MIME types.
 // Mappings documentation:
 // https://developers.google.com/drive/api/guides/mime-types
 // https://developers.google.com/drive/api/guides/ref-export-formats
-// TODO(crbug.com/402436108): Localize the following strings.
-const auto kMimeTypeMapping = base::MakeFixedFlatMap<std::string_view,
-                                                     std::string_view>({
-    {"application/vnd.google-apps.audio", "Audio"},
-    {"application/vnd.google-apps.document", "Google Docs"},
-    {"application/vnd.google-apps.drive-sdk", "Third-party shortcut"},
-    {"application/vnd.google-apps.drawing", "Google Drawings"},
-    {"application/vnd.google-apps.file", "Google Drive file"},
-    {"application/vnd.google-apps.folder", "Google Drive folder"},
-    {"application/vnd.google-apps.form", "Google Forms"},
-    {"application/vnd.google-apps.fusiontable", "Google Fusion Tables"},
-    {"application/vnd.google-apps.jam", "Google Jamboard"},
-    {"application/vnd.google-apps.mail-layout", "Email layout"},
-    {"application/vnd.google-apps.map", "Google My Maps"},
-    {"application/vnd.google-apps.photo", "Google Photos"},
-    {"application/vnd.google-apps.presentation", "Google Slides"},
-    {"application/vnd.google-apps.script", "Google Apps Script"},
-    {"application/vnd.google-apps.shortcut", "Shortcut"},
-    {"application/vnd.google-apps.site", "Google Sites"},
-    {"application/vnd.google-apps.spreadsheet", "Google Sheets"},
-    {"application/vnd.google-apps.unknown", ""},
-    {"application/vnd.google-apps.vid", "MP4"},
-    {"application/vnd.google-apps.video", "Video"},
-    {"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-     "Microsoft Word"},
-    {"application/vnd.oasis.opendocument.text", "OpenDocument"},
-    {"application/rtf", "Rich Text"},
-    {"application/pdf", "PDF"},
-    {"text/plain", "Plain Text"},
-    {"application/zip", "ZIP"},
-    {"application/epub+zip", "EPUB ZIP"},
-    {"text/markdown", "Markdown"},
-    {"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-     "Microsoft Excel"},
-    {"application/x-vnd.oasis.opendocument.spreadsheet",
-     "OpenDocument Spreadsheet"},
-    {"text/csv", "Comma Separated Values"},
-    {"text/tab-separated-values", "Tab Separated Values"},
+const auto kMimeTypeMapping = base::MakeFixedFlatMap<std::string_view, int>({
+    {"application/json", IDS_CONTENT_SUGGESTION_DESCRIPTION_JSON},
+    {"application/rtf", IDS_CONTENT_SUGGESTION_DESCRIPTION_RICH_TEXT_FORMAT},
+    {"application/pdf", IDS_CONTENT_SUGGESTION_DESCRIPTION_PDF},
+    {"application/vnd.google-apps.document",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS},
+    {"application/vnd.google-apps.drawing",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRAWINGS},
+    {"application/vnd.google-apps.folder",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE_FOLDER},
+    {"application/vnd.google-apps.form",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS},
+    {"application/vnd.google-apps.jam",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_JAMBOARD},
+    {"application/vnd.google-apps.photo",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_PHOTOS},
+    {"application/vnd.google-apps.presentation",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES},
+    {"application/vnd.google-apps.script",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_APPS_SCRIPT},
+    {"application/vnd.google-apps.site",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SITES},
+    {"application/vnd.google-apps.spreadsheet",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS},
     {"application/"
      "vnd.openxmlformats-officedocument.presentationml.presentation",
-     "Microsoft PowerPoint"},
-    {"application/vnd.oasis.opendocument.presentation", "ODP"},
-    {"image/jpeg", "JPEG"},
-    {"image/png", "PNG"},
-    {"image/svg+xml", "Scalable Vector Graphics"},
-    {"application/vnd.google-apps.script+json", "JSON"},
-    {"video/quicktime", "Quicktime Video"},
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_POWERPOINT},
+    {"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_EXCEL},
+    {"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_WORD},
+    {"application/vnd.oasis.opendocument.presentation",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_PRESENTATION},
+    {"application/vnd.oasis.opendocument.spreadsheet",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_SPREADSHEET},
+    {"application/vnd.oasis.opendocument.text",
+     IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_TEXT},
+    {"application/zip", IDS_CONTENT_SUGGESTION_DESCRIPTION_ZIP_FILE},
+    {"image/jpeg", IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_JPEG},
+    {"image/png", IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_PNG},
+    {"image/svg+xml", IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_SVG},
+    {"text/csv", IDS_CONTENT_SUGGESTION_DESCRIPTION_COMMA_SEPARATED_VALUES},
+    {"text/markdown", IDS_CONTENT_SUGGESTION_DESCRIPTION_MARKDOWN},
+    {"text/plain", IDS_CONTENT_SUGGESTION_DESCRIPTION_PLAIN_TEXT},
+    {"video/mp4", IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_MP4},
+    {"video/quicktime", IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_QUICKTIME},
+    {"video/webm", IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_WEBM},
 });
 
 // A mapping from `source_type` to the human readable `content_type_description`.
-const auto kSourceTypeMapping = base::MakeFixedFlatMap<std::string_view,
-                                                       std::string_view>({
-    {"buganizer", "Buganizer Issue"},
-    {"jira", "Jira Issue"},
-    {"salesforce", "Salesforce"},
-    {"slack", "Slack Message"},
+const auto kSourceTypeMapping = base::MakeFixedFlatMap<std::string_view, int>({
+    {"buganizer", IDS_CONTENT_SUGGESTION_DESCRIPTION_BUGANIZER},
+    {"jira", IDS_CONTENT_SUGGESTION_DESCRIPTION_JIRA},
+    {"salesforce", IDS_CONTENT_SUGGESTION_DESCRIPTION_SALESFORCE},
+    {"slack", IDS_CONTENT_SUGGESTION_DESCRIPTION_SLACK},
 });
 
 // Helper for converting `mime_type` and `source_type` into a human readable
 // string. Prioritizes `mime_type` over `source_type`.
-std::string_view ContentTypeToDescription(const std::string_view& mime_type,
-                                          const std::string_view& source_type) {
+std::u16string ContentTypeToDescription(const std::string_view& mime_type,
+                                        const std::string_view& source_type) {
   const auto mimeTypeIter = kMimeTypeMapping.find(mime_type);
   if (mimeTypeIter != kMimeTypeMapping.end()) {
-    return mimeTypeIter->second;
+    return l10n_util::GetStringUTF16(mimeTypeIter->second);
   }
   const auto sourceTypeIter = kSourceTypeMapping.find(source_type);
-  return sourceTypeIter != kSourceTypeMapping.end() ? sourceTypeIter->second
-                                                    : "";
+  return sourceTypeIter != kSourceTypeMapping.end()
+             ? l10n_util::GetStringUTF16(sourceTypeIter->second)
+             : std::u16string();
 }
 
 // Helper for converting unix timestamp `time` into an abbreviated date.
@@ -931,12 +932,11 @@
     const std::u16string owner = base::UTF8ToUTF16(ptr_to_string(
         result.FindStringByDottedPath("document.derivedStructData.owner")));
 
-    const std::u16string content_type_description = base::UTF8ToUTF16(
-        ContentTypeToDescription(
-            ptr_to_string(result.FindStringByDottedPath(
-                "document.derivedStructData.mime_type")),
-            ptr_to_string(result.FindStringByDottedPath(
-                "document.derivedStructData.source_type"))));
+    const std::u16string content_type_description = ContentTypeToDescription(
+        ptr_to_string(result.FindStringByDottedPath(
+            "document.derivedStructData.mime_type")),
+        ptr_to_string(result.FindStringByDottedPath(
+            "document.derivedStructData.source_type")));
 
     return base::UTF16ToUTF8(GetLocalizedContentMetadata(
         last_updated, owner, content_type_description));
diff --git a/components/omnibox/browser/enterprise_search_aggregator_provider_unittest.cc b/components/omnibox/browser/enterprise_search_aggregator_provider_unittest.cc
index 984ec18..15a8da69 100644
--- a/components/omnibox/browser/enterprise_search_aggregator_provider_unittest.cc
+++ b/components/omnibox/browser/enterprise_search_aggregator_provider_unittest.cc
@@ -1748,7 +1748,7 @@
   ASSERT_EQ(matches.size(), 3u);
 
   // Verifies use of MIME type.
-  EXPECT_EQ(matches[0].contents, u"Quicktime Video");
+  EXPECT_EQ(matches[0].contents, u"QuickTime Video");
   EXPECT_EQ(matches[0].description, u"Evolution of Dance");
   EXPECT_EQ(matches[0].destination_url, GURL("https://url1/"));
 
@@ -1758,7 +1758,7 @@
   EXPECT_EQ(matches[1].destination_url, GURL("https://url2/"));
 
   // Verifies that MIME type takes precedent over source type.
-  EXPECT_EQ(matches[2].contents, u"PNG");
+  EXPECT_EQ(matches[2].contents, u"PNG Image");
   EXPECT_EQ(matches[2].description, u"Same thing we do every night, Pinky");
   EXPECT_EQ(matches[2].destination_url, GURL("https://url3/"));
 }
diff --git a/components/omnibox/browser/omnibox_prefs.cc b/components/omnibox/browser/omnibox_prefs.cc
index b8add83e..0b04bdc 100644
--- a/components/omnibox/browser/omnibox_prefs.cc
+++ b/components/omnibox/browser/omnibox_prefs.cc
@@ -19,6 +19,11 @@
 
 namespace omnibox {
 
+namespace {
+constexpr int kAIModeSearchSuggestAllowed = 0;
+constexpr int kAIModeSearchSuggestDisallowed = 1;
+}  // namespace
+
 void RegisterProfilePrefs(PrefRegistrySimple* registry) {
   registry->RegisterBooleanPref(
       kKeywordSpaceTriggeringEnabled, true,
@@ -42,6 +47,8 @@
   registry->RegisterIntegerPref(kShownCountHistoryScopePromo, 0);
   registry->RegisterIntegerPref(kShownCountHistoryEmbeddingsScopePromo, 0);
   registry->RegisterIntegerPref(kFocusedSrpWebCount, 0);
+  registry->RegisterIntegerPref(omnibox::kAIModeSearchSuggestSettings,
+                                kAIModeSearchSuggestAllowed);
 }
 
 void SetUserPreferenceForZeroSuggestCachedResponse(
@@ -75,4 +82,9 @@
   return value_ptr ? *value_ptr : std::string();
 }
 
+bool IsMiaDisabledByPolicy(PrefService* prefs) {
+  return prefs->GetInteger(omnibox::kAIModeSearchSuggestSettings) ==
+         omnibox::kAIModeSearchSuggestDisallowed;
+}
+
 }  // namespace omnibox
diff --git a/components/omnibox/browser/omnibox_prefs.h b/components/omnibox/browser/omnibox_prefs.h
index 547dafc..78978db 100644
--- a/components/omnibox/browser/omnibox_prefs.h
+++ b/components/omnibox/browser/omnibox_prefs.h
@@ -85,6 +85,8 @@
 inline constexpr char kShownCountHistoryEmbeddingsScopePromo[] =
     "omnibox.shown_count_history_embeddings_scope_promo";
 inline constexpr char kFocusedSrpWebCount[] = "omnibox.focused_srp_web_count";
+inline constexpr char kAIModeSearchSuggestSettings[] =
+    "omnibox.ai_mode_search_suggest_settings";
 
 // Many of the prefs defined above are registered locally where they're used.
 // New prefs should be added here and ordered the same as they're defined above.
@@ -102,6 +104,9 @@
     PrefService* prefs,
     const std::string& page_url);
 
+// Returns true if the MIA is disabled per the policy.
+bool IsMiaDisabledByPolicy(PrefService* prefs);
+
 }  // namespace omnibox
 
 #endif  // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_PREFS_H_
diff --git a/components/omnibox/common/omnibox_feature_configs.cc b/components/omnibox/common/omnibox_feature_configs.cc
index 3b6cb7a..a4144fc2 100644
--- a/components/omnibox/common/omnibox_feature_configs.cc
+++ b/components/omnibox/common/omnibox_feature_configs.cc
@@ -137,6 +137,8 @@
       base::FeatureParam<int>(&kContextualSearchAlternativeActionLabel,
                               "LabelIndex", 0)
           .Get();
+  show_open_lens_action =
+      feature_enabled(kOmniboxContextualSearchOnFocusSuggestions);
 }
 
 ContextualSearch::ContextualSearch(const ContextualSearch&) = default;
@@ -145,7 +147,7 @@
 ContextualSearch::~ContextualSearch() = default;
 
 bool ContextualSearch::IsContextualSearchEnabled() const {
-  return contextual_zps_limit > 0;
+  return show_open_lens_action;
 }
 
 bool ContextualSearch::IsEnabledWithPrefetch() const {
diff --git a/components/omnibox/common/omnibox_feature_configs.h b/components/omnibox/common/omnibox_feature_configs.h
index 1f9d9677..1315e286 100644
--- a/components/omnibox/common/omnibox_feature_configs.h
+++ b/components/omnibox/common/omnibox_feature_configs.h
@@ -189,6 +189,9 @@
 
   // Which alternative action label to use for lens entrypoint action.
   int alternative_action_label;
+
+  // Whether the Lens entrypoint action should be shown in the Omnibox popup.
+  bool show_open_lens_action;
 };
 
 // If enabled, allows MIA zero-prefix suggestions in NTP omnibox and realbox.
diff --git a/components/omnibox_strings.grdp b/components/omnibox_strings.grdp
index ff9d990..952d911 100644
--- a/components/omnibox_strings.grdp
+++ b/components/omnibox_strings.grdp
@@ -99,20 +99,107 @@
   <message name="IDS_OMNIBOX_READER_MODE" desc="Text shown in the omnibox to indicate a user is viewing the reader mode view of an article.">
     Reader Mode
   </message>
-  <message name="IDS_DRIVE_SUGGESTION_DOCUMENT" desc="Google Docs product name, for use in omnibox Docs result descriptions.">
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_BUGANIZER" desc="Buganizer issue name, for use in omnibox content suggestion descriptions.">
+    Buganizer Issue
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_COMMA_SEPARATED_VALUES" desc="Comma-separated values file format name, for use in omnibox content suggestion descriptions.">
+    Comma-Separated Values
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_APPS_SCRIPT" desc="Google Apps Script product name, for use in omnibox content suggestion descriptions.">
+    Google Apps Script
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS" desc="Google Docs product name, for use in omnibox content suggestion descriptions.">
     Google Docs
   </message>
-  <message name="IDS_DRIVE_SUGGESTION_FORM" desc="Google Docs product name, for use in omnibox Form result descriptions.">
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRAWINGS" desc="Google Drawings product name, for use in omnibox content suggestion descriptions.">
+    Google Drawings
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE" desc="Google Drive product name shown when the file type is unknown, for use in omnibox content suggestion descriptions.">
+    Google Drive
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE_FOLDER" desc="Google Drive product name shown when the file is a folder, for use in omnibox content suggestion descriptions.">
+    Google Drive Folder
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS" desc="Google Forms product name, for use in omnibox content suggestion descriptions.">
     Google Forms
   </message>
-  <message name="IDS_DRIVE_SUGGESTION_SPREADSHEET" desc="Google Sheets product name, for use in omnibox Sheets result descriptions.">
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_JAMBOARD" desc="Google Jamboard product name, for use in omnibox content suggestion descriptions.">
+    Google Jamboard
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_PHOTOS" desc="Google Photos product name, for use in omnibox content suggestion descriptions.">
+    Google Photos
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SITES" desc="Google Sites product name, for use in omnibox content suggestion descriptions.">
+    Google Sites
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS" desc="Google Sheets product name, for use in omnibox content suggestion descriptions.">
     Google Sheets
   </message>
-    <message name="IDS_DRIVE_SUGGESTION_PRESENTATION" desc="Google Slides product name, for use in omnibox Slides result descriptions.">
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES" desc="Google Slides product name, for use in omnibox content suggestion descriptions.">
     Google Slides
   </message>
-  <message name="IDS_DRIVE_SUGGESTION_GENERAL" desc="Google Drive product name, for use in general omnibox Drive file result descriptions.">
-    Google Drive
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_JPEG" desc="JPEG image file format name, for use in omnibox content suggestion descriptions.">
+    JPEG Image
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_PNG" desc="PNG image file format name, for use in omnibox content suggestion descriptions.">
+    PNG Image
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_SVG" desc="SVG image file format name, for use in omnibox content suggestion descriptions.">
+    SVG Image
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_JIRA" desc="Jira issue name, for use in omnibox content suggestion descriptions.">
+    Jira Issue
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_JSON" desc="JSON file format name, for use in omnibox content suggestion descriptions.">
+    JSON
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_MARKDOWN" desc="Markdown file format name, for use in omnibox content suggestion descriptions.">
+    Markdown
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_EXCEL" desc="Microsoft Excel product name, for use in omnibox content suggestion descriptions.">
+    Microsoft Excel
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_POWERPOINT" desc="Microsoft PowerPoint product name, for use in omnibox content suggestion descriptions.">
+    Microsoft PowerPoint
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_WORD" desc="Microsoft Word product name, for use in omnibox content suggestion descriptions.">
+    Microsoft Word
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_PRESENTATION" desc="OpenDocument Presentation product name, for use in omnibox content suggestion descriptions.">
+    OpenDocument Presentation
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_SPREADSHEET" desc="OpenDocument Spreadsheet product name, for use in omnibox content suggestion descriptions.">
+    OpenDocument Spreadsheet
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_TEXT" desc="OpenDocument Text product name, for use in omnibox content suggestion descriptions.">
+    OpenDocument Text
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_PDF" desc="PDF file format name, for use in omnibox content suggestion descriptions.">
+    PDF
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_PLAIN_TEXT" desc="Plain text file format name, for use in omnibox content suggestion descriptions.">
+    Plain Text
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_RICH_TEXT_FORMAT" desc="Rich Text Format file format name, for use in omnibox content suggestion descriptions.">
+    Rich Text Format
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_SALESFORCE" desc="Salesforce product name, for use in omnibox content suggestion descriptions.">
+    Salesforce
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_SLACK" desc="Slack message name, for use in omnibox content suggestion descriptions.">
+    Slack Message
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_MP4" desc="MP4 video file format name, for use in omnibox content suggestion descriptions.">
+    MP4 Video
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_QUICKTIME" desc="QuickTime video file format name, for use in omnibox content suggestion descriptions.">
+    QuickTime Video
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_WEBM" desc="WebM video file format name, for use in omnibox content suggestion descriptions.">
+    WebM Video
+  </message>
+  <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_ZIP_FILE" desc="ZIP archive file format name, for use in omnibox content suggestion descriptions.">
+    ZIP Archive
   </message>
   <message name="IDS_CONTENT_SUGGESTION_DESCRIPTION_TEMPLATE" desc="Product description for Google Drive omnibox results.">
     <ph name="RESULT_MODIFIED_DATE">$1<ex>12/31/2018</ex></ph> - <ph name="RESULT_OWNER">$2<ex>First Last</ex></ph> - <ph name="RESULT_PRODUCT_SOURCE">$3<ex>Google Docs</ex></ph>
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_BUGANIZER.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_BUGANIZER.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_BUGANIZER.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_COMMA_SEPARATED_VALUES.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_COMMA_SEPARATED_VALUES.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_COMMA_SEPARATED_VALUES.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_EXCEL.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_EXCEL.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_EXCEL.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_APPS_SCRIPT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_APPS_SCRIPT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_APPS_SCRIPT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DOCS.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRAWINGS.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRAWINGS.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRAWINGS.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE_FOLDER.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE_FOLDER.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_DRIVE_FOLDER.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_FORMS.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_JAMBOARD.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_JAMBOARD.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_JAMBOARD.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_PHOTOS.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_PHOTOS.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_PHOTOS.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SHEETS.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SITES.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SITES.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SITES.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_GOOGLE_SLIDES.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_JPEG.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_JPEG.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_JPEG.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_PNG.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_PNG.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_PNG.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_SVG.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_SVG.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_IMAGE_SVG.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JIRA.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JIRA.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JIRA.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JSON.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JSON.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_JSON.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MARKDOWN.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MARKDOWN.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MARKDOWN.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_EXCEL.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_EXCEL.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_EXCEL.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_POWERPOINT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_POWERPOINT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_POWERPOINT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_WORD.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_WORD.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_MS_WORD.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_PRESENTATION.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_PRESENTATION.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_PRESENTATION.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_SPREADSHEET.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_SPREADSHEET.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_SPREADSHEET.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_TEXT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_TEXT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_OPEN_DOCUMENT_TEXT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PDF.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PDF.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PDF.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PLAIN_TEXT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PLAIN_TEXT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_PLAIN_TEXT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_POWERPOINT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_POWERPOINT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_POWERPOINT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_RICH_TEXT_FORMAT.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_RICH_TEXT_FORMAT.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_RICH_TEXT_FORMAT.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SALESFORCE.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SALESFORCE.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SALESFORCE.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SLACK.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SLACK.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_SLACK.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_MP4.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_MP4.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_MP4.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_QUICKTIME.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_QUICKTIME.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_QUICKTIME.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_WEBM.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_WEBM.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_VIDEO_WEBM.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_WORD.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_WORD.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_WORD.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_ZIP_FILE.png.sha1 b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_ZIP_FILE.png.sha1
new file mode 100644
index 0000000..c118838
--- /dev/null
+++ b/components/omnibox_strings_grdp/IDS_CONTENT_SUGGESTION_DESCRIPTION_ZIP_FILE.png.sha1
@@ -0,0 +1 @@
+bbfab3e4562cfcf9f2bc29536fe36422fee14cc6
\ No newline at end of file
diff --git a/components/optimization_guide/core/model_execution/on_device_model_service_controller.cc b/components/optimization_guide/core/model_execution/on_device_model_service_controller.cc
index 355e260..8052513 100644
--- a/components/optimization_guide/core/model_execution/on_device_model_service_controller.cc
+++ b/components/optimization_guide/core/model_execution/on_device_model_service_controller.cc
@@ -15,6 +15,7 @@
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/metrics/metrics_hashes.h"
 #include "base/notreached.h"
 #include "base/strings/strcat.h"
 #include "base/task/thread_pool.h"
@@ -125,6 +126,12 @@
       reason);
 }
 
+void RecordOnDeviceLoadModelResult(
+    on_device_model::mojom::LoadModelResult result) {
+  base::UmaHistogramEnumeration(
+      "OptimizationGuide.ModelExecution.OnDeviceBaseModelLoadResult", result);
+}
+
 }  // namespace
 
 OnDeviceModelServiceController::OnDeviceModelServiceController(
@@ -513,6 +520,9 @@
   remote_.reset_on_idle_timeout(has_direct_use_
                                     ? features::GetOnDeviceModelIdleTimeout()
                                     : base::TimeDelta());
+  base::UmaHistogramSparse(
+      "OptimizationGuide.ModelExecution.OnDeviceBaseModelLoadVersion",
+      base::HashMetricName(model_metadata_->version()));
   return remote_;
 }
 
@@ -547,7 +557,7 @@
   }
   controller_->service_client_.Get()->LoadModel(
       std::move(params), std::move(model),
-      base::DoNothingAs<void(on_device_model::mojom::LoadModelResult)>());
+      base::BindOnce(&RecordOnDeviceLoadModelResult));
   controller_->service_client_.RemovePendingUsage();
 }
 
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesSettings.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesSettings.java
index 94692b65..127b1d8 100644
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesSettings.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesSettings.java
@@ -237,12 +237,17 @@
             long expiration) {
         if (controlsState == CookieControlsState.ACTIVE_TP
                 || controlsState == CookieControlsState.PAUSED_TP) {
-            // TODO(crbug.com/388294499): Add support for TP UI.
+            updateTrackingProtectionState();
         } else {
             update3pcState(controlsState, enforcement, expiration);
         }
     }
 
+    public void updateTrackingProtectionState() {
+        // TODO(crbug.com/388294499): Add support for TP UI.
+        mCookieSwitch.setVisible(false);
+    }
+
     public void update3pcState(
             @CookieControlsState int controlsState,
             @CookieControlsEnforcement int enforcement,
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml
index f6eb06a..7242a777 100644
--- a/components/policy/resources/templates/policies.yaml
+++ b/components/policy/resources/templates/policies.yaml
@@ -1364,6 +1364,7 @@
   1363: TLS13EarlyDataEnabled
   1364: LocalNetworkAccessRestrictionsEnabled
   1365: PrefetchWithServiceWorkerEnabled
+  1366: AIModeSearchSuggestSettings
 
 atomic_groups:
   1: Homepage
diff --git a/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml b/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml
new file mode 100644
index 0000000..b5c10b7
--- /dev/null
+++ b/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml
@@ -0,0 +1,40 @@
+caption: Settings for AI Mode Search recommendations in the address bar and new tab page search box
+
+desc: |-
+  This policy controls the AI Mode recommendations section in the address bar and the new tab page search box.
+
+  This feature is available to all users with Google as their default search engine, unless it is disabled by this policy.
+
+  If the policy is unset, its behavior is determined by the <ph name="GEN_AI_DEFAULT_SETTINGS_POLICY_NAME">GenAiDefaultSettings</ph> policy.
+
+  When policy is set to 0 - Enabled or not set, the feature will be available to users. When policy is set to 1 - Disabled, the feature will not be available.
+
+  0 = Allow the feature to be used
+  1 = Do not allow the feature.
+
+default: 0
+example_value: 1
+features:
+  dynamic_refresh: true
+  per_profile: true
+items:
+- caption: Allow AI Mode recommendations.
+  name: Allowed
+  value: 0
+- caption: Do not allow AI Mode recommendations.
+  name: Disabled
+  value: 1
+owners:
+- file://components/omnibox/OWNERS
+schema:
+  enum:
+  - 0
+  - 1
+  type: integer
+supported_on:
+- android:138-
+- ios:138-
+- chrome.*:138-
+- chrome_os:138-
+tags: []
+type: int-enum
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterExtensionAttributionEnabled.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterExtensionAttributionEnabled.yaml
index dc6edd77..8abc043 100644
--- a/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterExtensionAttributionEnabled.yaml
+++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterExtensionAttributionEnabled.yaml
@@ -16,9 +16,9 @@
 - chrome.*:138-
 - chrome_os:138-
 items:
-- caption: Enable extension theme attribution on NTP Footer
+- caption: Enable extension attribution on NTP Footer
   value: true
-- caption: Disable extension theme attribution on NTP Footer
+- caption: Disable extension attribution on NTP Footer
   value: false
 owners:
 - file://components/policy/OWNERS
diff --git a/components/policy/test/data/pref_mapping/AIModeSearchSuggestSettings.json b/components/policy/test/data/pref_mapping/AIModeSearchSuggestSettings.json
new file mode 100644
index 0000000..152ef6c
--- /dev/null
+++ b/components/policy/test/data/pref_mapping/AIModeSearchSuggestSettings.json
@@ -0,0 +1,20 @@
+[
+    {
+      "os": [
+        "android",
+        "win",
+        "linux",
+        "mac",
+        "chromeos"
+      ],
+      "simple_policy_pref_mapping_test": {
+        "pref_name": "omnibox.ai_mode_search_suggest_settings",
+        "default_value": 0,
+        "default_for_enterprise_users": 0,
+        "values_to_test": [
+          1,
+          0
+        ]
+      }
+    }
+]
\ No newline at end of file
diff --git a/components/policy/test/data/pref_mapping/GenAiDefaultSettings.json b/components/policy/test/data/pref_mapping/GenAiDefaultSettings.json
index 57a5d4e..a287d78 100644
--- a/components/policy/test/data/pref_mapping/GenAiDefaultSettings.json
+++ b/components/policy/test/data/pref_mapping/GenAiDefaultSettings.json
@@ -14,6 +14,9 @@
           "devtools.gen_ai_settings": {
             "value": 0
           },
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          },
           "optimization_guide.model_execution.autofill_prediction_improvements_enterprise_policy_allowed": {
             "value": 0
           },
@@ -42,6 +45,9 @@
           "devtools.gen_ai_settings": {
             "value": 1
           },
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          },
           "optimization_guide.model_execution.autofill_prediction_improvements_enterprise_policy_allowed": {
             "value": 1
           },
@@ -70,6 +76,9 @@
           "devtools.gen_ai_settings": {
             "value": 2
           },
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 1
+          },
           "optimization_guide.model_execution.autofill_prediction_improvements_enterprise_policy_allowed": {
             "value": 2
           },
@@ -96,6 +105,9 @@
           "devtools.gen_ai_settings": {
             "default_value": 0
           },
+          "omnibox.ai_mode_search_suggest_settings": {
+            "default_value": 0
+          },
           "optimization_guide.model_execution.autofill_prediction_improvements_enterprise_policy_allowed": {
             "default_value": 0
           },
@@ -181,6 +193,9 @@
           "devtools.gen_ai_settings": {
             "value": 0
           },
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          },
           "optimization_guide.model_execution.autofill_prediction_improvements_enterprise_policy_allowed": {
             "value": 0
           },
@@ -332,6 +347,45 @@
     "os": [
       "android"
     ],
-    "reason_for_missing_test": "No covered GenAI policies are currently supported on Android."
+    "policy_pref_mapping_tests": [
+      {
+        "policies": {
+          "GenAiDefaultSettings": 0
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          }
+        }
+      },
+      {
+        "policies": {
+          "GenAiDefaultSettings": 1
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          }
+        }
+      },
+      {
+        "policies": {
+          "GenAiDefaultSettings": 2
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 1
+          }
+        }
+      },
+      {
+        "policies": {},
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "default_value": 0
+          }
+        }
+      }
+    ]
   }
 ]
diff --git a/components/privacy_sandbox/privacy_sandbox_survey_service.h b/components/privacy_sandbox/privacy_sandbox_survey_service.h
index 7dc249b..e96778e 100644
--- a/components/privacy_sandbox/privacy_sandbox_survey_service.h
+++ b/components/privacy_sandbox/privacy_sandbox_survey_service.h
@@ -22,7 +22,7 @@
     kInvalidSurveyConfig = 4,  // Failed to initialize survey config.
     kMaxValue = kInvalidSurveyConfig,
   };
-  // LINT.ThenChange(/tools/metrics/histograms/enums.xml)
+  // LINT.ThenChange(/tools/metrics/histograms/metadata/privacy/enums.xml)
 };
 
 }  // namespace privacy_sandbox
diff --git a/components/tabs/OWNERS b/components/tabs/OWNERS
index 66eaeac8..7737b31 100644
--- a/components/tabs/OWNERS
+++ b/components/tabs/OWNERS
@@ -1,4 +1,5 @@
 dfried@chromium.org
 dpenning@chromium.org
 dljames@chromium.org
+erikchen@chromium.org
 shibalik@chromium.org
diff --git a/components/tabs/public/tab_interface.h b/components/tabs/public/tab_interface.h
index 42745a8a..a037fb73 100644
--- a/components/tabs/public/tab_interface.h
+++ b/components/tabs/public/tab_interface.h
@@ -72,6 +72,25 @@
   static TabInterface* MaybeGetFromContents(content::WebContents* web_contents);
 
   // Returns a weak pointer to `this`.
+  //
+  // WARNING: Many uses of base::WeakPtr are inappropriate and lead to bugs.
+  // An appropriate use case is as a variable passed to an asynchronously
+  // invoked PostTask.
+  // An inappropriate use case is to store as a member of an object that can
+  // outlive TabInterface. This leads to inconsistent state machines.
+  // For example (don't do this):
+  // class FooOutlivesTab{
+  //   base::WeakPtr<TabInterface> tab_;
+  //   // Conceptually, this member should only be set if tab_ is set.
+  //   std::optional<SkColor> color_of_tab_;
+  // };
+  // For example (do this):
+  // class FooOutlivesTab {
+  //   // Use RegisterWillDetach() to clear both tab_ and color_of_tab_ prior
+  //   // to tab_ destruction.
+  //   raw_ptr<TabInterface> tab_;
+  //   std::optional<SkColor> color_of_tab_;
+  // };
   virtual base::WeakPtr<TabInterface> GetWeakPtr() = 0;
 
   // When a tab is in the background, the WebContents may be discarded to save
diff --git a/components/user_education/common/feature_promo/feature_promo_specification.cc b/components/user_education/common/feature_promo/feature_promo_specification.cc
index aeb55b1d..bf24ec5 100644
--- a/components/user_education/common/feature_promo/feature_promo_specification.cc
+++ b/components/user_education/common/feature_promo/feature_promo_specification.cc
@@ -81,10 +81,10 @@
   // code for your new Custom UI promo.
   //
   // Add the text names of allowlisted rotating promos here:
-  // static constexpr auto kAllowedPromoNames =
-  //     base::MakeFixedFlatSet<std::string_view>({ });
-  // return kAllowedPromoNames.contains(promo_feature.name);
-  return false;
+  static constexpr auto kAllowedPromoNames =
+      base::MakeFixedFlatSet<std::string_view>(
+          {"IPH_ExtensionsZeroStatePromo"});
+  return kAllowedPromoNames.contains(promo_feature.name);
 }
 
 bool IsAllowedLegacyPromo(const base::Feature& promo_feature) {
diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
index a97edc5..158b3853 100644
--- a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
+++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc
@@ -383,9 +383,6 @@
                  : FeaturePromoClosedReason::kOverrideForPrecedence);
   }
 
-  // If the session policy allows overriding other help bubbles, close them.
-  CloseHelpBubbleIfPresent(anchor_element->context());
-
   // TODO(crbug.com/40200981): Currently this must be called before
   // ShouldTriggerHelpUI() below. See bug for details.
   if (build_params.spec->promo_type() !=
@@ -403,6 +400,9 @@
     return FeaturePromoResult::kBlockedByConfig;
   }
 
+  // If the session policy allows overriding other help bubbles, close them.
+  CloseHelpBubbleIfPresent(anchor_element->context());
+
   // Store the current promo.
   set_current_promo(std::move(lifecycle));
 
diff --git a/components/variations/variations_seed_store.cc b/components/variations/variations_seed_store.cc
index c283c8e..252b9e5c 100644
--- a/components/variations/variations_seed_store.cc
+++ b/components/variations/variations_seed_store.cc
@@ -78,9 +78,11 @@
 constexpr int kSendPlatformSafeSeedMaxAttempts = 2;
 #endif  // BUILDFLAG(IS_CHROMEOS)
 
+// LINT.IfChange
 // The name of the seed file that stores the latest seed data.
 const base::FilePath::CharType kSeedFilename[] =
     FILE_PATH_LITERAL("VariationsSeedV1");
+// LINT.ThenChange(/testing/scripts/variations_seed_access_helper.py, /components/variations/variations_seed_store.cc, /components/variations/service/variations_field_trial_creator_unittest.cc, /chrome/browser/metrics/variations/variations_safe_mode_end_to_end_browsertest.cc)
 
 // Returns true if |signature| is empty and if the command-line flag to accept
 // empty seed signature is specified.
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index 1aa65225..0a61597 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -39,14 +39,14 @@
 // involvement. For now, this applies only to top controls.
 BASE_FEATURE(kAndroidBrowserControlsInViz,
              "AndroidBrowserControlsInViz",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // If this flag is enabled, AndroidBrowserControlsInViz and
 // BottomControlsRefactor with the "Dispatch yOffset" variation must also be
 // enabled.
 BASE_FEATURE(kAndroidBcivBottomControls,
              "AndroidBcivBottomControls",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #endif  // BUILDFLAG(IS_ANDROID)
 
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc
index eef09f8f..e045d5c 100644
--- a/components/viz/service/display/surface_aggregator.cc
+++ b/components/viz/service/display/surface_aggregator.cc
@@ -841,8 +841,6 @@
   if (referenced_surfaces_.count(surface_id))
     return;
 
-  ++stats_->copied_surface_count;
-
 
   // If we are stretching content to fill the SurfaceDrawQuad, or if the device
   // scale factor mismatches between content and SurfaceDrawQuad, we appply an
@@ -1506,8 +1504,6 @@
     return;
   }
 
-  ++stats_->copied_surface_count;
-
   const gfx::Transform surface_transform =
       IsRootSurface(surface) ? root_surface_transform_ : gfx::Transform();
 
@@ -1998,7 +1994,6 @@
     return gfx::Rect();
 
   DebugLogSurface(surface, resolved_frame.WillDraw());
-  ++stats_->prewalked_surface_count;
 
   auto& root_resolved_pass = resolved_frame.GetRootRenderPassData();
   if (parent_pass) {
@@ -2359,12 +2354,6 @@
 }
 
 void SurfaceAggregator::RecordStatHistograms() {
-  UMA_HISTOGRAM_COUNTS_100(
-      "Compositing.SurfaceAggregator.PrewalkedSurfaceCount",
-      stats_->prewalked_surface_count);
-  UMA_HISTOGRAM_COUNTS_100("Compositing.SurfaceAggregator.CopiedSurfaceCount",
-                           stats_->copied_surface_count);
-
   UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
       "Compositing.SurfaceAggregator.PrewalkUs", stats_->prewalk_time,
       kHistogramMinTime, kHistogramMaxTime, kHistogramTimeBuckets);
diff --git a/components/viz/service/display/surface_aggregator.h b/components/viz/service/display/surface_aggregator.h
index 2644b4a..3c385138 100644
--- a/components/viz/service/display/surface_aggregator.h
+++ b/components/viz/service/display/surface_aggregator.h
@@ -133,8 +133,6 @@
   struct PrewalkResult;
 
   struct AggregateStatistics {
-    int prewalked_surface_count = 0;
-    int copied_surface_count = 0;
     // True if the current frame contains a pixel-moving foreground filter
     // render pass.
     bool has_pixel_moving_filter = false;
diff --git a/components/web_modal/modal_dialog_host.cc b/components/web_modal/modal_dialog_host.cc
index b05fa83c..1b02f9a 100644
--- a/components/web_modal/modal_dialog_host.cc
+++ b/components/web_modal/modal_dialog_host.cc
@@ -16,4 +16,11 @@
   return true;
 }
 
+bool ModalDialogHost::ShouldDialogBoundsConstrainedByHost() {
+  // Please consult with //constrained_window OWNERS if you intend to release
+  // the bounds constraint for your WebContents container (i.e. returning
+  // false from this function).
+  return true;
+}
+
 }  // namespace web_modal
diff --git a/components/web_modal/modal_dialog_host.h b/components/web_modal/modal_dialog_host.h
index 51ed6bc..c618c00 100644
--- a/components/web_modal/modal_dialog_host.h
+++ b/components/web_modal/modal_dialog_host.h
@@ -34,11 +34,19 @@
 
   // Returns the view against which the dialog is positioned and parented.
   virtual gfx::NativeView GetHostView() const = 0;
+
   // Gets the position for the dialog in coordinates relative to the host view.
   virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0;
+
   // Returns whether a dialog currently about to be shown should be activated.
   virtual bool ShouldActivateDialog() const;
 
+  // Returns true if the web modal dialog should be constrained within the
+  // bounds of the modal host. True by default. Please consult with
+  // //constrained_window OWNERS if you intend to release the bounds constraint
+  // for your WebContents container (i.e. returning false from this function).
+  virtual bool ShouldDialogBoundsConstrainedByHost();
+
   // Add/remove observer. The host must implement these methods, store the
   // observers in a list, and call OnHostDestroying() on each before host
   // destruction. See https://crbug.com/1170577
diff --git a/content/browser/accessibility/accessibility_auralinux_browsertest.cc b/content/browser/accessibility/accessibility_auralinux_browsertest.cc
index 3b7c020..b5a87aa 100644
--- a/content/browser/accessibility/accessibility_auralinux_browsertest.cc
+++ b/content/browser/accessibility/accessibility_auralinux_browsertest.cc
@@ -9,6 +9,7 @@
 
 #include "base/functional/callback_helpers.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/version.h"
 #include "build/build_config.h"
diff --git a/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc b/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
index 62d57b19..e649ec0 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
@@ -5,6 +5,7 @@
 #include "content/browser/accessibility/accessibility_tree_formatter_fuchsia.h"
 
 #include "base/notreached.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
diff --git a/content/browser/accessibility/web_contents_accessibility_android.cc b/content/browser/accessibility/web_contents_accessibility_android.cc
index 56b86d5..957a21f5 100644
--- a/content/browser/accessibility/web_contents_accessibility_android.cc
+++ b/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -23,6 +23,7 @@
 #include "base/feature_list.h"
 #include "base/hash/hash.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "base/timer/elapsed_timer.h"
diff --git a/content/browser/aggregation_service/aggregation_service_network_fetcher_impl.cc b/content/browser/aggregation_service/aggregation_service_network_fetcher_impl.cc
index e07a5ee..529ee8c 100644
--- a/content/browser/aggregation_service/aggregation_service_network_fetcher_impl.cc
+++ b/content/browser/aggregation_service/aggregation_service_network_fetcher_impl.cc
@@ -15,6 +15,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/time/clock.h"
 #include "base/time/time.h"
 #include "content/browser/aggregation_service/public_key_parsing_utils.h"
diff --git a/content/browser/attribution_reporting/attribution_resolver_unittest.cc b/content/browser/attribution_reporting/attribution_resolver_unittest.cc
index e7a75fc8..1b40504 100644
--- a/content/browser/attribution_reporting/attribution_resolver_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_resolver_unittest.cc
@@ -23,6 +23,7 @@
 #include "base/functional/callback.h"
 #include "base/functional/callback_helpers.h"
 #include "base/memory/raw_ptr.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
diff --git a/content/browser/attribution_reporting/interop/runner.cc b/content/browser/attribution_reporting/interop/runner.cc
index a636bd2..ef73f49 100644
--- a/content/browser/attribution_reporting/interop/runner.cc
+++ b/content/browser/attribution_reporting/interop/runner.cc
@@ -29,6 +29,7 @@
 #include "base/memory/scoped_refptr.h"
 #include "base/sequence_checker.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/task/task_traits.h"
diff --git a/content/browser/back_forward_cache_basics_browsertest.cc b/content/browser/back_forward_cache_basics_browsertest.cc
index 1d04ba9..82b91b4 100644
--- a/content/browser/back_forward_cache_basics_browsertest.cc
+++ b/content/browser/back_forward_cache_basics_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include <array>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "content/browser/back_forward_cache_browsertest.h"
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index 81c2a95..1e03339 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -16,6 +16,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/metrics_hashes.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/task/common/task_annotator.h"
 #include "base/task/single_thread_task_runner.h"
diff --git a/content/browser/back_forward_cache_features_browsertest.cc b/content/browser/back_forward_cache_features_browsertest.cc
index 38f54aa..766e867 100644
--- a/content/browser/back_forward_cache_features_browsertest.cc
+++ b/content/browser/back_forward_cache_features_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/containers/contains.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/platform_thread.h"
 #include "base/time/time.h"
diff --git a/content/browser/back_forward_cache_network_request_browsertest.cc b/content/browser/back_forward_cache_network_request_browsertest.cc
index 9922da8..57f1a6e 100644
--- a/content/browser/back_forward_cache_network_request_browsertest.cc
+++ b/content/browser/back_forward_cache_network_request_browsertest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "build/build_config.h"
 #include "content/browser/back_forward_cache_browsertest.h"
 
+#include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
+#include "build/build_config.h"
 #include "content/browser/renderer_host/navigation_request.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/test/browser_test.h"
diff --git a/content/browser/background_fetch/background_fetch_test_base.cc b/content/browser/background_fetch/background_fetch_test_base.cc
index f427fde..2843ddb 100644
--- a/content/browser/background_fetch/background_fetch_test_base.cc
+++ b/content/browser/background_fetch/background_fetch_test_base.cc
@@ -5,6 +5,7 @@
 #include "content/browser/background_fetch/background_fetch_test_base.h"
 
 #include <stdint.h>
+
 #include <map>
 #include <memory>
 #include <utility>
@@ -17,6 +18,7 @@
 #include "base/functional/callback.h"
 #include "base/memory/weak_ptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/time/time.h"
 #include "content/browser/background_fetch/background_fetch_registration_id.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
diff --git a/content/browser/background_fetch/storage/database_task.cc b/content/browser/background_fetch/storage/database_task.cc
index 39fb241..d40f883 100644
--- a/content/browser/background_fetch/storage/database_task.cc
+++ b/content/browser/background_fetch/storage/database_task.cc
@@ -11,6 +11,7 @@
 #include "base/functional/bind.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/observer_list.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "content/browser/background_fetch/background_fetch_data_manager.h"
 #include "content/browser/background_fetch/background_fetch_data_manager_observer.h"
diff --git a/content/browser/background_sync/periodic_background_sync_browsertest.cc b/content/browser/background_sync/periodic_background_sync_browsertest.cc
index 5dd57be..84d2f6e2b 100644
--- a/content/browser/background_sync/periodic_background_sync_browsertest.cc
+++ b/content/browser/background_sync/periodic_background_sync_browsertest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/simple_test_clock.h"
 #include "base/time/time.h"
diff --git a/content/browser/browsing_topics/header_util_unittest.cc b/content/browser/browsing_topics/header_util_unittest.cc
index 7e966d4f..13ae5d5f 100644
--- a/content/browser/browsing_topics/header_util_unittest.cc
+++ b/content/browser/browsing_topics/header_util_unittest.cc
@@ -5,6 +5,7 @@
 #include "content/browser/browsing_topics/header_util.h"
 
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/test/navigation_simulator.h"
diff --git a/content/browser/btm/btm_bounce_detector_unittest.cc b/content/browser/btm/btm_bounce_detector_unittest.cc
index 2f17336..a0fc989 100644
--- a/content/browser/btm/btm_bounce_detector_unittest.cc
+++ b/content/browser/btm/btm_bounce_detector_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/functional/callback_forward.h"
 #include "base/functional/callback_helpers.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/content/browser/btm/btm_database_unittest.cc b/content/browser/btm/btm_database_unittest.cc
index 1153fa7..9cc97b7 100644
--- a/content/browser/btm/btm_database_unittest.cc
+++ b/content/browser/btm/btm_database_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/path_service.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
diff --git a/content/browser/btm/btm_navigation_flow_detector_browsertest.cc b/content/browser/btm/btm_navigation_flow_detector_browsertest.cc
index f3d0b7da1..12cf94c 100644
--- a/content/browser/btm/btm_navigation_flow_detector_browsertest.cc
+++ b/content/browser/btm/btm_navigation_flow_detector_browsertest.cc
@@ -5,6 +5,7 @@
 #include "content/browser/btm/btm_navigation_flow_detector.h"
 
 #include "base/base64.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/to_string.h"
 #include "base/test/bind.h"
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc
index 6675f6c..77172b0 100644
--- a/content/browser/devtools/devtools_agent_host_impl.cc
+++ b/content/browser/devtools/devtools_agent_host_impl.cc
@@ -14,6 +14,7 @@
 #include "base/no_destructor.h"
 #include "base/notreached.h"
 #include "base/observer_list.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "content/browser/devtools/auction_worklet_devtools_agent_host.h"
 #include "content/browser/devtools/dedicated_worker_devtools_agent_host.h"
diff --git a/content/browser/devtools/protocol/background_service_handler.cc b/content/browser/devtools/protocol/background_service_handler.cc
index b77aa719..d34d5fe 100644
--- a/content/browser/devtools/protocol/background_service_handler.cc
+++ b/content/browser/devtools/protocol/background_service_handler.cc
@@ -5,6 +5,7 @@
 #include "content/browser/devtools/protocol/background_service_handler.h"
 
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/browser/renderer_host/frame_tree.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/browser/storage_partition_impl.h"
diff --git a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
index 3fafd6f..9c9baa0 100644
--- a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
+++ b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
@@ -23,6 +23,7 @@
 #include "base/logging.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/safe_sprintf.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "base/task/sequenced_task_runner.h"
diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc
index b85679d..87440869 100644
--- a/content/browser/devtools/protocol/tracing_handler.cc
+++ b/content/browser/devtools/protocol/tracing_handler.cc
@@ -19,6 +19,7 @@
 #include "base/memory/ref_counted_memory.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc
index d65d7524..7cd8e94 100644
--- a/content/browser/download/download_browsertest.cc
+++ b/content/browser/download/download_browsertest.cc
@@ -33,6 +33,7 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind.h"
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc
index 1bc475f..348eac03 100644
--- a/content/browser/download/download_manager_impl_unittest.cc
+++ b/content/browser/download/download_manager_impl_unittest.cc
@@ -22,6 +22,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/gmock_callback_support.h"
diff --git a/content/browser/file_system_access/file_system_access_file_writer_impl_unittest.cc b/content/browser/file_system_access/file_system_access_file_writer_impl_unittest.cc
index 39bcb65..7cd70af63 100644
--- a/content/browser/file_system_access/file_system_access_file_writer_impl_unittest.cc
+++ b/content/browser/file_system_access/file_system_access_file_writer_impl_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/functional/bind.h"
 #include "base/functional/callback_helpers.h"
 #include "base/memory/raw_ptr.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/bind.h"
diff --git a/content/browser/find_request_manager_browsertest.cc b/content/browser/find_request_manager_browsertest.cc
index 4dfc98c..40b64f0 100644
--- a/content/browser/find_request_manager_browsertest.cc
+++ b/content/browser/find_request_manager_browsertest.cc
@@ -7,13 +7,15 @@
 #pragma allow_unsafe_buffers
 #endif
 
+#include "content/browser/find_request_manager.h"
+
 #include "base/command_line.h"
 #include "base/memory/raw_ptr.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "content/browser/find_in_page_client.h"
-#include "content/browser/find_request_manager.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/browser/content_browser_client.h"
 #include "content/public/common/content_client.h"
diff --git a/content/browser/hid/hid_service_unittest.cc b/content/browser/hid/hid_service_unittest.cc
index b38f049..0961952 100644
--- a/content/browser/hid/hid_service_unittest.cc
+++ b/content/browser/hid/hid_service_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/barrier_closure.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/gmock_callback_support.h"
diff --git a/content/browser/interest_group/auction_nonce_manager.cc b/content/browser/interest_group/auction_nonce_manager.cc
index faa3f80..e8878bb 100644
--- a/content/browser/interest_group/auction_nonce_manager.cc
+++ b/content/browser/interest_group/auction_nonce_manager.cc
@@ -10,6 +10,7 @@
 
 #include "base/containers/contains.h"
 #include "base/feature_list.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/uuid.h"
 #include "content/browser/devtools/devtools_instrumentation.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
diff --git a/content/browser/interest_group/auction_worklet_manager_unittest.cc b/content/browser/interest_group/auction_worklet_manager_unittest.cc
index d43cfafc..2ccd3ab7 100644
--- a/content/browser/interest_group/auction_worklet_manager_unittest.cc
+++ b/content/browser/interest_group/auction_worklet_manager_unittest.cc
@@ -19,6 +19,7 @@
 #include "base/location.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/interest_group/bidding_and_auction_server_key_fetcher.cc b/content/browser/interest_group/bidding_and_auction_server_key_fetcher.cc
index 2ede831..8321b2a 100644
--- a/content/browser/interest_group/bidding_and_auction_server_key_fetcher.cc
+++ b/content/browser/interest_group/bidding_and_auction_server_key_fetcher.cc
@@ -9,6 +9,7 @@
 #include "base/json/json_reader.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/rand_util.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/browser/interest_group/interest_group_features.h"
 #include "content/browser/interest_group/interest_group_manager_impl.h"
 #include "content/browser/interest_group/interest_group_storage.pb.h"
diff --git a/content/browser/interest_group/interest_group_storage_unittest.cc b/content/browser/interest_group/interest_group_storage_unittest.cc
index e8a61203..d72fecb 100644
--- a/content/browser/interest_group/interest_group_storage_unittest.cc
+++ b/content/browser/interest_group/interest_group_storage_unittest.cc
@@ -18,6 +18,7 @@
 #include "base/run_loop.h"
 #include "base/strings/escape.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/content/browser/interest_group/trusted_signals_fetcher_unittest.cc b/content/browser/interest_group/trusted_signals_fetcher_unittest.cc
index 0090bc5..06873087 100644
--- a/content/browser/interest_group/trusted_signals_fetcher_unittest.cc
+++ b/content/browser/interest_group/trusted_signals_fetcher_unittest.cc
@@ -23,6 +23,7 @@
 #include "base/functional/callback.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index d2616227..287d602 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -21,6 +21,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "components/download/public/common/download_stats.h"
diff --git a/content/browser/loader/prefetch_browsertest.cc b/content/browser/loader/prefetch_browsertest.cc
index fd32a02..d11643b 100644
--- a/content/browser/loader/prefetch_browsertest.cc
+++ b/content/browser/loader/prefetch_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/media/capture/sub_capture_target_id_web_contents_helper.cc b/content/browser/media/capture/sub_capture_target_id_web_contents_helper.cc
index 107b20c..838696c 100644
--- a/content/browser/media/capture/sub_capture_target_id_web_contents_helper.cc
+++ b/content/browser/media/capture/sub_capture_target_id_web_contents_helper.cc
@@ -10,6 +10,7 @@
 
 #include "base/containers/contains.h"
 #include "base/functional/callback.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/token.h"
 #include "base/uuid.h"
 #include "build/build_config.h"
diff --git a/content/browser/media/cdm_storage_database.cc b/content/browser/media/cdm_storage_database.cc
index 70da4fd..d3fac47 100644
--- a/content/browser/media/cdm_storage_database.cc
+++ b/content/browser/media/cdm_storage_database.cc
@@ -10,6 +10,7 @@
 #include "base/files/file_util.h"
 #include "base/json/values_util.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/string_number_conversions.h"
 #include "sql/statement.h"
 
 namespace content {
diff --git a/content/browser/media/media_devices_util.cc b/content/browser/media/media_devices_util.cc
index b31c5a31..9c09aac 100644
--- a/content/browser/media/media_devices_util.cc
+++ b/content/browser/media/media_devices_util.cc
@@ -10,6 +10,7 @@
 #include "base/command_line.h"
 #include "base/functional/bind.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_tokenizer.h"
 #include "content/browser/browser_main_loop.h"
diff --git a/content/browser/navigation_transitions/back_forward_transition_animator.cc b/content/browser/navigation_transitions/back_forward_transition_animator.cc
index 99df1f0..89296c0e 100644
--- a/content/browser/navigation_transitions/back_forward_transition_animator.cc
+++ b/content/browser/navigation_transitions/back_forward_transition_animator.cc
@@ -8,6 +8,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/numerics/ranges.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/time/time.h"
 #include "cc/slim/layer.h"
 #include "cc/slim/solid_color_layer.h"
diff --git a/content/browser/network/trust_token_browsertest.cc b/content/browser/network/trust_token_browsertest.cc
index c0eea90..d875bb3 100644
--- a/content/browser/network/trust_token_browsertest.cc
+++ b/content/browser/network/trust_token_browsertest.cc
@@ -9,6 +9,7 @@
 #include <string_view>
 
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "build/build_config.h"
diff --git a/content/browser/network_service_instance_impl.cc b/content/browser/network_service_instance_impl.cc
index 329eee4..fe6ac16 100644
--- a/content/browser/network_service_instance_impl.cc
+++ b/content/browser/network_service_instance_impl.cc
@@ -138,19 +138,9 @@
 
 // If this feature is enabled, the Network Service will run on its own thread
 // when running in-process; otherwise it will run on the IO thread.
-//
-// On Chrome OS, the Network Service must run on the IO thread because
-// ProfileIOData and NetworkContext both try to set up NSS, which has to be
-// called from the IO thread.
-// TODO(crbug.com/390333881): can this chromeos-specific behavior be removed now
-// too? Is there anything that still uses NSS from the network service?
 BASE_FEATURE(kNetworkServiceDedicatedThread,
              "NetworkServiceDedicatedThread",
-#if BUILDFLAG(IS_CHROMEOS)
-             base::FEATURE_DISABLED_BY_DEFAULT
-#else
              base::FEATURE_ENABLED_BY_DEFAULT
-#endif
 );
 
 base::Thread& GetNetworkServiceDedicatedThread() {
diff --git a/content/browser/performance_timeline_browsertest.cc b/content/browser/performance_timeline_browsertest.cc
index 0b302a5c..c00bad6 100644
--- a/content/browser/performance_timeline_browsertest.cc
+++ b/content/browser/performance_timeline_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/base_paths.h"
 #include "base/command_line.h"
 #include "base/path_service.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/trace_event_analyzer.h"
 #include "components/ukm/test_ukm_recorder.h"
diff --git a/content/browser/permissions/embedded_permission_control_checker.cc b/content/browser/permissions/embedded_permission_control_checker.cc
index 2848133a..9e78a112 100644
--- a/content/browser/permissions/embedded_permission_control_checker.cc
+++ b/content/browser/permissions/embedded_permission_control_checker.cc
@@ -6,6 +6,7 @@
 
 #include <string>
 
+#include "base/strings/string_number_conversions.h"
 #include "content/browser/log_console_message.h"
 #include "third_party/blink/public/common/features_generated.h"
 
diff --git a/content/browser/preloading/prefetch/prefetch_service_unittest.cc b/content/browser/preloading/prefetch/prefetch_service_unittest.cc
index 0b89fca..46da2b3 100644
--- a/content/browser/preloading/prefetch/prefetch_service_unittest.cc
+++ b/content/browser/preloading/prefetch/prefetch_service_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/notreached.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
diff --git a/content/browser/preloading/preloading_data_impl_unittest.cc b/content/browser/preloading/preloading_data_impl_unittest.cc
index 90b72f56..495677fb 100644
--- a/content/browser/preloading/preloading_data_impl_unittest.cc
+++ b/content/browser/preloading/preloading_data_impl_unittest.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/browser/preloading/preloading.h"
diff --git a/content/browser/preloading/prerender/prerender_browsertest.cc b/content/browser/preloading/prerender/prerender_browsertest.cc
index 1b65121..2057df65 100644
--- a/content/browser/preloading/prerender/prerender_browsertest.cc
+++ b/content/browser/preloading/prerender/prerender_browsertest.cc
@@ -22,6 +22,7 @@
 #include "base/run_loop.h"
 #include "base/scoped_observation.h"
 #include "base/strings/escape.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/content/browser/preloading/prerender/prerender_host_registry_unittest.cc b/content/browser/preloading/prerender/prerender_host_registry_unittest.cc
index 3287a52..695e20b 100644
--- a/content/browser/preloading/prerender/prerender_host_registry_unittest.cc
+++ b/content/browser/preloading/prerender/prerender_host_registry_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <cstdint>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
 #include "content/browser/preloading/preload_pipeline_info_impl.h"
diff --git a/content/browser/preloading/prerenderer_impl_unittest.cc b/content/browser/preloading/prerenderer_impl_unittest.cc
index 887dc43..f283fd5 100644
--- a/content/browser/preloading/prerenderer_impl_unittest.cc
+++ b/content/browser/preloading/prerenderer_impl_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <array>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "content/browser/preloading/preloading_confidence.h"
 #include "content/browser/preloading/prerender/prerender_features.h"
diff --git a/content/browser/private_aggregation/private_aggregation_pending_contributions.h b/content/browser/private_aggregation/private_aggregation_pending_contributions.h
index ed73cde6..281baab9 100644
--- a/content/browser/private_aggregation/private_aggregation_pending_contributions.h
+++ b/content/browser/private_aggregation/private_aggregation_pending_contributions.h
@@ -95,7 +95,7 @@
     kTruncationNotDueToUnconditionalContributions = 2,
     kMaxValue = kTruncationNotDueToUnconditionalContributions,
   };
-  // LINT.ThenChange(//tools/metrics/histograms/enums.xml:PrivacySandboxPrivateAggregationTruncationResult)
+  // LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:PrivacySandboxPrivateAggregationTruncationResult)
 
   // The elements of `histogram_suffixes` must outlive this object.
   PrivateAggregationPendingContributions(
diff --git a/content/browser/renderer_host/back_forward_cache_impl.cc b/content/browser/renderer_host/back_forward_cache_impl.cc
index a6a1960..c714efe 100644
--- a/content/browser/renderer_host/back_forward_cache_impl.cc
+++ b/content/browser/renderer_host/back_forward_cache_impl.cc
@@ -19,6 +19,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/rand_util.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/time/time.h"
diff --git a/content/browser/renderer_host/input/autoscroll_browsertest.cc b/content/browser/renderer_host/input/autoscroll_browsertest.cc
index d8c99b0..c6e2cf7 100644
--- a/content/browser/renderer_host/input/autoscroll_browsertest.cc
+++ b/content/browser/renderer_host/input/autoscroll_browsertest.cc
@@ -179,7 +179,13 @@
 // See https://crbug.com/686223 We similarly don't plan on supporting
 // this for iOS.
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
-IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest, AutoscrollFling) {
+// TODO(crbug.com/419838337) Fix failing test on linux
+#if BUILDFLAG(IS_LINUX)
+#define MAYBE_AutoscrollFling DISABLED_AutoscrollFling
+#else
+#define MAYBE_AutoscrollFling AutoscrollFling
+#endif
+IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest, MAYBE_AutoscrollFling) {
   LoadURL(kAutoscrollDataURL);
 
   // Start autoscroll with middle click.
@@ -227,7 +233,14 @@
 
 // Tests that the GSU and GSE events generated from the autoscroll fling have
 // non-zero positions in widget.
-IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest, GSUGSEValidPositionInWidget) {
+// TODO(crbug.com/419838337) Fix failing test on linux
+#if BUILDFLAG(IS_LINUX)
+#define MAYBE_GSUGSEValidPositionInWidget DISABLED_GSUGSEValidPositionInWidget
+#else
+#define MAYBE_GSUGSEValidPositionInWidget GSUGSEValidPositionInWidget
+#endif
+IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest,
+                       MAYBE_GSUGSEValidPositionInWidget) {
   LoadURL(kAutoscrollDataURL);
 
   // Start autoscroll with middle click.
@@ -293,8 +306,16 @@
 
 // Checks that wheel scrolling does not work once the cursor has entered the
 // autoscroll mode.
+// TODO(crbug.com/419838337) Fix failing test on linux
+#if BUILDFLAG(IS_LINUX)
+#define MAYBE_WheelScrollingDoesNotWorkInAutoscrollMode \
+  DISABLED_WheelScrollingDoesNotWorkInAutoscrollMode
+#else
+#define MAYBE_WheelScrollingDoesNotWorkInAutoscrollMode \
+  WheelScrollingDoesNotWorkInAutoscrollMode
+#endif
 IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest,
-                       WheelScrollingDoesNotWorkInAutoscrollMode) {
+                       MAYBE_WheelScrollingDoesNotWorkInAutoscrollMode) {
   LoadURL(kAutoscrollDataURL);
 
   // Start autoscroll with middle click.
@@ -320,8 +341,16 @@
 
 // Checks that autoscrolling still works after changing the scroll direction
 // when the element is fully scrolled.
+// TODO(crbug.com/419838337) Fix failing test on linux
+#if BUILDFLAG(IS_LINUX)
+#define MAYBE_AutoscrollDirectionChangeAfterFullyScrolled \
+  DISABLED_AutoscrollDirectionChangeAfterFullyScrolled
+#else
+#define MAYBE_AutoscrollDirectionChangeAfterFullyScrolled \
+  AutoscrollDirectionChangeAfterFullyScrolled
+#endif
 IN_PROC_BROWSER_TEST_F(AutoscrollBrowserTest,
-                       AutoscrollDirectionChangeAfterFullyScrolled) {
+                       MAYBE_AutoscrollDirectionChangeAfterFullyScrolled) {
   LoadURL(kAutoscrollDataURL);
 
   // Start autoscroll with middle click.
diff --git a/content/browser/renderer_host/input/scroll_latency_browsertest.cc b/content/browser/renderer_host/input/scroll_latency_browsertest.cc
index 78c1715..5851ff4 100644
--- a/content/browser/renderer_host/input/scroll_latency_browsertest.cc
+++ b/content/browser/renderer_host/input/scroll_latency_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/functional/bind.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/renderer_host/input/scroll_tracing_browsertest.cc b/content/browser/renderer_host/input/scroll_tracing_browsertest.cc
index 5de6c99..bba167f 100644
--- a/content/browser/renderer_host/input/scroll_tracing_browsertest.cc
+++ b/content/browser/renderer_host/input/scroll_tracing_browsertest.cc
@@ -5,6 +5,7 @@
 #include <memory>
 #include <string_view>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_trace_processor.h"
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc
index db53193..a87f8dd7 100644
--- a/content/browser/renderer_host/navigation_controller_impl.cc
+++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -930,6 +930,7 @@
 
 void NavigationControllerImpl::Reload(ReloadType reload_type,
                                       bool check_for_repost) {
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
   SCOPED_CRASH_KEY_NUMBER("nav_reentrancy_caller1", "Reload_type",
                           (int)reload_type);
   SCOPED_CRASH_KEY_BOOL("nav_reentrancy_caller1", "Reload_check",
@@ -1006,7 +1007,7 @@
       reload_type,
       /*initiator_rfh=*/nullptr,
       /*soft_navigation_heuristics_task_id=*/std::nullopt,
-      /*navigation_api_key=*/nullptr);
+      /*navigation_api_key=*/nullptr, actual_navigation_start);
 }
 
 void NavigationControllerImpl::CancelPendingReload() {
@@ -1239,7 +1240,8 @@
   std::vector<base::WeakPtr<NavigationRequest>> requests =
       GoToIndex(index, /*initiator_rfh=*/nullptr,
                 /*soft_navigation_heuristics_task_id=*/std::nullopt,
-                /*navigation_api_key=*/nullptr);
+                /*navigation_api_key=*/nullptr,
+                /*actual_navigation_start=*/base::TimeTicks::Now());
   std::vector<base::WeakPtr<NavigationHandle>> handles;
   std::ranges::move(requests, std::back_inserter(handles));
   return handles;
@@ -1251,7 +1253,8 @@
     RenderFrameHostImpl* initiator_rfh,
     std::optional<blink::scheduler::TaskAttributionId>
         soft_navigation_heuristics_task_id,
-    const std::string* navigation_api_key) {
+    const std::string* navigation_api_key,
+    base::TimeTicks actual_navigation_start) {
   TRACE_EVENT0("browser,navigation,benchmark",
                "NavigationControllerImpl::GoToIndex");
   SCOPED_CRASH_KEY_NUMBER("nav_reentrancy_caller1", "GoToIndex_index", index);
@@ -1280,9 +1283,9 @@
   pending_entry_index_ = index;
   pending_entry_->SetTransitionType(ui::PageTransitionFromInt(
       pending_entry_->GetTransitionType() | ui::PAGE_TRANSITION_FORWARD_BACK));
-  return NavigateToExistingPendingEntry(ReloadType::NONE, initiator_rfh,
-                                        soft_navigation_heuristics_task_id,
-                                        navigation_api_key);
+  return NavigateToExistingPendingEntry(
+      ReloadType::NONE, initiator_rfh, soft_navigation_heuristics_task_id,
+      navigation_api_key, actual_navigation_start);
 }
 
 void NavigationControllerImpl::GoToOffset(int offset) {
@@ -1297,21 +1300,23 @@
     int offset,
     RenderFrameHostImpl* initiator_rfh,
     std::optional<blink::scheduler::TaskAttributionId>
-        soft_navigation_heuristics_task_id) {
+        soft_navigation_heuristics_task_id,
+    base::TimeTicks actual_navigation_start) {
   // Note: This is actually reached in unit tests.
   if (!CanGoToOffset(offset))
     return;
 
   GoToIndex(GetIndexForOffset(offset), initiator_rfh,
             soft_navigation_heuristics_task_id,
-            /*navigation_api_key=*/nullptr);
+            /*navigation_api_key=*/nullptr, actual_navigation_start);
 }
 
 std::vector<base::WeakPtr<NavigationRequest>>
 NavigationControllerImpl::GoToIndexAndReturnAllRequests(int index) {
   return GoToIndex(index, /*initiator_rfh=*/nullptr,
                    /*soft_navigation_heuristics_task_id=*/std::nullopt,
-                   /*navigation_api_key=*/nullptr);
+                   /*navigation_api_key=*/nullptr,
+                   /*actual_navigation_start=*/base::TimeTicks::Now());
 }
 
 #if BUILDFLAG(IS_ANDROID)
@@ -1386,6 +1391,16 @@
 
 base::WeakPtr<NavigationHandle> NavigationControllerImpl::LoadURLWithParams(
     const LoadURLParams& params) {
+  // For now, treat this as the actual navigation start time, even though a fair
+  // amount of work is done in the browser process between the various ways to
+  // start a navigation and reaching here (e.g., sending OpenURLParams through
+  // the embedder and converting them to LoadURLParams). Note that this may be
+  // used for some renderer-initiated navigations that go through
+  // RenderFrameHostImpl::OpenURL as well.
+  // TODO(crbug.com/385170155): Consider whether tracking this earlier work with
+  // an earlier start time is worthwhile for metrics.
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
+
   if (params.is_renderer_initiated)
     DCHECK(params.initiator_origin.has_value());
 
@@ -1432,7 +1447,7 @@
   // The user initiated a load, we don't need to reload anymore.
   needs_reload_ = false;
 
-  return NavigateWithoutEntry(params);
+  return NavigateWithoutEntry(params, actual_navigation_start);
 }
 
 void NavigationControllerImpl::LoadOriginalRequestURL() {
@@ -2745,7 +2760,8 @@
     RenderFrameHostImpl* render_frame_host,
     mojo::PendingAssociatedRemote<mojom::NavigationClient>* navigation_client,
     blink::LocalFrameToken initiator_frame_token,
-    int initiator_process_id) {
+    int initiator_process_id,
+    base::TimeTicks actual_navigation_start) {
   NavigationEntryImpl* entry =
       GetEntryWithUniqueID(render_frame_host->nav_entry_id());
   if (!entry)
@@ -2760,7 +2776,7 @@
       render_frame_host->frame_tree_node(), entry, frame_entry,
       ReloadType::NONE, false /* is_same_document_history_load */,
       true /* is_history_navigation_in_new_child */, initiator_frame_token,
-      initiator_process_id);
+      initiator_process_id, actual_navigation_start);
 
   if (!request)
     return false;
@@ -2791,6 +2807,7 @@
 }
 
 bool NavigationControllerImpl::ReloadFrame(FrameTreeNode* frame_tree_node) {
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
   NavigationEntryImpl* entry = GetEntryAtIndex(GetCurrentEntryIndex());
   if (!entry)
     return false;
@@ -2814,7 +2831,8 @@
       false /* is_same_document_history_load */,
       false /* is_history_navigation_in_new_child */,
       std::nullopt /* initiator_frame_token */,
-      ChildProcessHost::kInvalidUniqueID /* initiator_process_id */);
+      ChildProcessHost::kInvalidUniqueID /* initiator_process_id */,
+      actual_navigation_start);
   if (!request)
     return false;
   frame_tree_node->navigator().Navigate(std::move(request), reload_type);
@@ -3202,7 +3220,8 @@
     RenderFrameHostImpl* initiator_rfh,
     std::optional<blink::scheduler::TaskAttributionId>
         soft_navigation_heuristics_task_id,
-    const std::string* navigation_api_key) {
+    const std::string* navigation_api_key,
+    base::TimeTicks actual_navigation_start) {
   TRACE_EVENT0("navigation",
                "NavigationControllerImpl::NavigateToExistingPendingEntry");
   DCHECK(pending_entry_);
@@ -3253,7 +3272,8 @@
   std::vector<std::unique_ptr<NavigationRequest>> different_document_loads;
   FindFramesToNavigate(root, reload_type, initiator_frame_token,
                        initiator_process_id, soft_navigation_heuristics_task_id,
-                       &same_document_loads, &different_document_loads);
+                       actual_navigation_start, &same_document_loads,
+                       &different_document_loads);
 
   if (same_document_loads.empty() && different_document_loads.empty()) {
     // We were unable to match any frames to navigate.  This can happen if a
@@ -3279,7 +3299,8 @@
             ReloadType::NONE /* reload_type */,
             true /* is_same_document_history_load */,
             false /* is_history_navigation_in_new_child */,
-            initiator_frame_token, initiator_process_id);
+            initiator_frame_token, initiator_process_id,
+            actual_navigation_start);
     if (!navigation_request) {
       // If this navigation cannot start, delete the pending NavigationEntry.
       DiscardPendingEntry(false);
@@ -3390,7 +3411,7 @@
           root, pending_entry_, pending_entry_->GetFrameEntry(root),
           ReloadType::NONE, false /* is_same_document_history_load */,
           false /* is_history_navigation_in_new_child */, initiator_frame_token,
-          initiator_process_id);
+          initiator_process_id, actual_navigation_start);
       request = navigation_request->GetWeakPtr();
       root->navigator().Navigate(std::move(navigation_request),
                                  ReloadType::NONE);
@@ -3687,6 +3708,7 @@
     int initiator_process_id,
     std::optional<blink::scheduler::TaskAttributionId>
         soft_navigation_heuristics_task_id,
+    base::TimeTicks actual_navigation_start,
     std::vector<std::unique_ptr<NavigationRequest>>* same_document_loads,
     std::vector<std::unique_ptr<NavigationRequest>>* different_document_loads) {
   DCHECK(pending_entry_);
@@ -3701,7 +3723,7 @@
             /*is_same_document_history_load=*/true,
             /*is_history_navigation_in_new_child_frame=*/false,
             initiator_frame_token, initiator_process_id,
-            soft_navigation_heuristics_task_id);
+            actual_navigation_start, soft_navigation_heuristics_task_id);
     if (navigation_request) {
       // Only add the request if was properly created. It's possible for the
       // creation to fail in certain cases, e.g. when the URL is invalid.
@@ -3713,7 +3735,8 @@
             frame, pending_entry_, new_item, reload_type,
             false /* is_same_document_history_load */,
             false /* is_history_navigation_in_new_child */,
-            initiator_frame_token, initiator_process_id);
+            initiator_frame_token, initiator_process_id,
+            actual_navigation_start);
     if (navigation_request) {
       // Only add the request if was properly created. It's possible for the
       // creation to fail in certain cases, e.g. when the URL is invalid.
@@ -3733,12 +3756,14 @@
     FindFramesToNavigate(frame->child_at(i), reload_type, initiator_frame_token,
                          initiator_process_id,
                          /*soft_navigation_heuristics_task_id=*/std::nullopt,
-                         same_document_loads, different_document_loads);
+                         actual_navigation_start, same_document_loads,
+                         different_document_loads);
   }
 }
 
 base::WeakPtr<NavigationHandle> NavigationControllerImpl::NavigateWithoutEntry(
-    const LoadURLParams& params) {
+    const LoadURLParams& params,
+    base::TimeTicks actual_navigation_start) {
   FrameTreeNode* node = GetTargetFrameTreeNodeForNavigation(params);
 
   // Compute overrides to the LoadURLParams for |override_user_agent|,
@@ -3848,22 +3873,13 @@
   // RenderFrameHost to execute its BeforeUnload event, the navigation start
   // will be updated when the BeforeUnload ack is received.
   const auto navigation_start_time = base::TimeTicks::Now();
-  // For now, treat this as the actual navigation start time as well, even
-  // though a fair amount of work is done in the browser process between the
-  // various ways to start a navigation and reaching here (e.g., sending
-  // OpenURLParams through the embedder and converting them to LoadURLParams).
-  // Note that this may be used for some renderer-initiated navigations that go
-  // through RenderFrameHostImpl::OpenURL as well.
-  // TODO(crbug.com/385170155): Consider whether tracking this earlier work with
-  // an earlier start time is worthwhile for metrics.
-  const auto actual_navigation_start_time = navigation_start_time;
 
   std::unique_ptr<NavigationRequest> request =
       CreateNavigationRequestFromLoadParams(
           node, params, override_user_agent, should_replace_current_entry,
           params.has_user_gesture, network::mojom::SourceLocation::New(),
           reload_type, pending_entry_, pending_entry_->GetFrameEntry(node),
-          actual_navigation_start_time, navigation_start_time);
+          actual_navigation_start, navigation_start_time);
 
   // If the navigation couldn't start, return immediately and discard the
   // pending NavigationEntry.
@@ -4293,6 +4309,7 @@
     bool is_history_navigation_in_new_child_frame,
     const std::optional<blink::LocalFrameToken>& initiator_frame_token,
     int initiator_process_id,
+    base::TimeTicks actual_navigation_start,
     std::optional<blink::scheduler::TaskAttributionId>
         soft_navigation_heuristics_task_id) {
   DCHECK(frame_entry);
@@ -4323,9 +4340,6 @@
   // "Open link in new tab"). If the navigation must wait on the current
   // RenderFrameHost to execute its BeforeUnload event, the navigation start
   // will be updated when the BeforeUnload ack is received.
-  // TODO(crbug.com/385170155): Consider whether to track an earlier
-  // `actual_navigation_start` by plumbing it from the the initiator (e.g.,
-  // for renderer-initiated history navigations, etc).
   base::TimeTicks navigation_start = base::TimeTicks::Now();
   const auto navigation_start_system_entropy =
       SystemEntropyUtils::ComputeSystemEntropyForFrameTreeNode(
@@ -4369,8 +4383,7 @@
       entry->ConstructCommonNavigationParams(
           *frame_entry, request_body, dest_url,
           blink::mojom::Referrer::New(dest_referrer.url, dest_referrer.policy),
-          navigation_type, /*actual_navigation_start=*/navigation_start,
-          navigation_start,
+          navigation_type, actual_navigation_start, navigation_start,
           /*input_start=*/base::TimeTicks());
   common_params->is_history_navigation_in_new_child_frame =
       is_history_navigation_in_new_child_frame;
@@ -4442,6 +4455,7 @@
 }
 
 void NavigationControllerImpl::LoadIfNecessary() {
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
   SCOPED_CRASH_KEY_BOOL("nav_reentrancy_caller1", "LoadIf_pending",
                         !!pending_entry_);
   if (!needs_reload_)
@@ -4467,13 +4481,13 @@
         ReloadType::NONE,
         /*initiator_rfh=*/nullptr,
         /*soft_navigation_heuristics_task_id=*/std::nullopt,
-        /*navigation_api_key=*/nullptr);
+        /*navigation_api_key=*/nullptr, actual_navigation_start);
   } else if (pending_entry_) {
     NavigateToExistingPendingEntry(
         ReloadType::NONE,
         /*initiator_rfh=*/nullptr,
         /*soft_navigation_heuristics_task_id=*/std::nullopt,
-        /*navigation_api_key=*/nullptr);
+        /*navigation_api_key=*/nullptr, actual_navigation_start);
   } else if (!GetLastCommittedEntry()
                   ->IsInitialEntryNotForSynchronousAboutBlank()) {
     pending_entry_ = entries_[last_committed_entry_index_].get();
@@ -4482,7 +4496,7 @@
         ReloadType::NONE,
         /*initiator_rfh=*/nullptr,
         /*soft_navigation_heuristics_task_id=*/std::nullopt,
-        /*navigation_api_key=*/nullptr);
+        /*navigation_api_key=*/nullptr, actual_navigation_start);
   } else {
     // We should never navigate to an existing initial NavigationEntry that is
     // the initial NavigationEntry for the initial empty document that hasn't
@@ -5041,7 +5055,8 @@
     RenderFrameHostImpl* initiator_rfh,
     std::optional<blink::scheduler::TaskAttributionId>
         soft_navigation_heuristics_task_id,
-    const std::string& key) {
+    const std::string& key,
+    base::TimeTicks actual_navigation_start) {
   FrameTreeNode* node = initiator_rfh->frame_tree_node();
   FrameNavigationEntry* current_entry =
       GetLastCommittedEntry()->GetFrameEntry(node);
@@ -5061,7 +5076,8 @@
     if (result == HistoryNavigationAction::kStopLooking)
       break;
     if (result != HistoryNavigationAction::kKeepLooking) {
-      GoToIndex(i, initiator_rfh, soft_navigation_heuristics_task_id, &key);
+      GoToIndex(i, initiator_rfh, soft_navigation_heuristics_task_id, &key,
+                actual_navigation_start);
       return;
     }
   }
@@ -5071,7 +5087,8 @@
     if (result == HistoryNavigationAction::kStopLooking)
       break;
     if (result != HistoryNavigationAction::kKeepLooking) {
-      GoToIndex(i, initiator_rfh, soft_navigation_heuristics_task_id, &key);
+      GoToIndex(i, initiator_rfh, soft_navigation_heuristics_task_id, &key,
+                actual_navigation_start);
       return;
     }
   }
diff --git a/content/browser/renderer_host/navigation_controller_impl.h b/content/browser/renderer_host/navigation_controller_impl.h
index 5fc7c654..f0653cd 100644
--- a/content/browser/renderer_host/navigation_controller_impl.h
+++ b/content/browser/renderer_host/navigation_controller_impl.h
@@ -180,7 +180,8 @@
       RenderFrameHostImpl* render_frame_host,
       mojo::PendingAssociatedRemote<mojom::NavigationClient>* navigation_client,
       blink::LocalFrameToken initiator_frame_token,
-      int initiator_process_id);
+      int initiator_process_id,
+      base::TimeTicks actual_navigation_start);
 
   // Reloads the |frame_tree_node| and returns true. In some rare cases, there
   // is no history related to the frame, nothing happens and this returns false.
@@ -191,10 +192,12 @@
   // |initiator_rfh| is the frame that requested the navigation.
   // |soft_navigation_heuristics_task_id| is the task in the renderer that
   // initiated this call (if any).
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   void GoToOffsetFromRenderer(int offset,
                               RenderFrameHostImpl* initiator_rfh,
                               std::optional<blink::scheduler::TaskAttributionId>
-                                  soft_navigation_heuristics_task_id);
+                                  soft_navigation_heuristics_task_id,
+                              base::TimeTicks actual_navigation_start);
 
   // A variation of `NavigationController::GoToIndex()`, that also returns all
   // the created `NavigationRequest`s. If no navigation request is created, the
@@ -265,11 +268,13 @@
   // other history navigation.
   // |soft_navigation_heuristics_task_id|: The task in the renderer that
   // initiated this call (if any).
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   void NavigateToNavigationApiKey(
       RenderFrameHostImpl* initiator_rfh,
       std::optional<blink::scheduler::TaskAttributionId>
           soft_navigation_heuristics_task_id,
-      const std::string& key);
+      const std::string& key,
+      base::TimeTicks actual_navigation_start);
 
   // Whether this is the initial navigation in an unmodified new tab.  In this
   // case, we know there is no content displayed in the page.
@@ -652,12 +657,14 @@
   // If this navigation originated from the navigation API, |navigation_api_key|
   // will be set and indicate the navigation api key that |initiator_rfh|
   // asked to be navigated to.
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   std::vector<base::WeakPtr<NavigationRequest>> GoToIndex(
       int index,
       RenderFrameHostImpl* initiator_rfh,
       std::optional<blink::scheduler::TaskAttributionId>
           soft_navigation_heuristics_task_id,
-      const std::string* navigation_api_key);
+      const std::string* navigation_api_key,
+      base::TimeTicks actual_navigation_start);
 
   // Starts a navigation to an already existing pending NavigationEntry. Returns
   // all the created `NavigationRequest`s. If no request was created, the
@@ -668,12 +675,14 @@
   // asked to be navigated to.
   // |soft_navigation_heuristics_task_id|: The task in the renderer that
   // initiated this call (if any).
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   std::vector<base::WeakPtr<NavigationRequest>> NavigateToExistingPendingEntry(
       ReloadType reload_type,
       RenderFrameHostImpl* initiator_rfh,
       std::optional<blink::scheduler::TaskAttributionId>
           soft_navigation_heuristics_task_id,
-      const std::string* navigation_api_key);
+      const std::string* navigation_api_key,
+      base::TimeTicks actual_navigation_start);
 
   // Helper function used by FindFramesToNavigate to determine the appropriate
   // action to take for a particular frame while navigating to
@@ -686,6 +695,7 @@
   // to |pending_entry_|, starting at |frame| and exploring its children.
   // |same_document_loads| and |different_document_loads| will be filled with
   // the NavigationRequests needed to navigate to |pending_entry_|.
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   // |soft_navigation_heuristics_task_id|: The task in the renderer that
   // initiated this call (if any).
   void FindFramesToNavigate(
@@ -695,14 +705,17 @@
       int initiator_process_id,
       std::optional<blink::scheduler::TaskAttributionId>
           soft_navigation_heuristics_task_id,
+      base::TimeTicks actual_navigation_start,
       std::vector<std::unique_ptr<NavigationRequest>>* same_document_loads,
       std::vector<std::unique_ptr<NavigationRequest>>*
           different_document_loads);
 
   // Starts a new navigation based on |load_params|, that doesn't correspond to
   // an existing NavigationEntry.
+  // |actual_navigation_start| is the time the navigation began, for metrics.
   base::WeakPtr<NavigationHandle> NavigateWithoutEntry(
-      const LoadURLParams& load_params);
+      const LoadURLParams& load_params,
+      base::TimeTicks actual_navigation_start);
 
   // Handles a navigation to a renderer-debug URL.
   void HandleRendererDebugURL(FrameTreeNode* frame_tree_node, const GURL& url);
@@ -764,6 +777,7 @@
       bool is_history_navigation_in_new_child_frame,
       const std::optional<blink::LocalFrameToken>& initiator_frame_token,
       int initiator_process_id,
+      base::TimeTicks actual_navigation_start,
       std::optional<blink::scheduler::TaskAttributionId>
           soft_navigation_heuristics_task_id = std::nullopt);
 
diff --git a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
index 14103a20..c92644dd 100644
--- a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
+++ b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
@@ -21405,8 +21405,9 @@
 
   // NavigateToNavigationApiKey() should not crash if the renderer manages to
   // call it when there is no committed origin.
-  controller.NavigateToNavigationApiKey(current_main_frame_host(), std::nullopt,
-                                        "key_doesnt_matter");
+  controller.NavigateToNavigationApiKey(
+      current_main_frame_host(), std::nullopt, "key_doesnt_matter",
+      /*actual_navigation_start=*/base::TimeTicks::Now());
 }
 
 // Tests that renderer-initiated navigation cancellation from the same JS task
diff --git a/content/browser/renderer_host/navigation_controller_impl_unittest.cc b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
index b9e7ef0..74e9404 100644
--- a/content/browser/renderer_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
@@ -4107,7 +4107,8 @@
   // NavigateToNavigationApiKey(). No navigation should occur.
   controller.NavigateToNavigationApiKey(
       main_test_rfh(),
-      /*soft_navigation_heuristics_task_id=*/std::nullopt, first_key);
+      /*soft_navigation_heuristics_task_id=*/std::nullopt, first_key,
+      /*actual_navigation_start=*/base::TimeTicks::Now());
   EXPECT_FALSE(controller.GetPendingEntry());
 }
 
@@ -4143,14 +4144,15 @@
       main_test_rfh()->frame_tree_node()->child_at(0);
   controller_impl().NavigateToNavigationApiKey(
       subframe_node->current_frame_host(),
-      /*soft_navigation_heuristics_task_id=*/std::nullopt, first_main_key);
+      /*soft_navigation_heuristics_task_id=*/std::nullopt, first_main_key,
+      /*actual_navigation_start=*/base::TimeTicks::Now());
   EXPECT_FALSE(controller_impl().GetPendingEntry());
 
   // Call NavigateToNavigationApiKey() on the main frame with the key from the
   // main frame. This time a navigation should begin.
   controller_impl().NavigateToNavigationApiKey(
       main_test_rfh(), /*soft_navigation_heuristics_task_id=*/std::nullopt,
-      first_main_key);
+      first_main_key, /*actual_navigation_start=*/base::TimeTicks::Now());
   EXPECT_TRUE(controller_impl().GetPendingEntry());
 }
 
diff --git a/content/browser/renderer_host/navigation_request_unittest.cc b/content/browser/renderer_host/navigation_request_unittest.cc
index 3ee00512..e605f7f 100644
--- a/content/browser/renderer_host/navigation_request_unittest.cc
+++ b/content/browser/renderer_host/navigation_request_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/containers/flat_map.h"
 #include "base/functional/bind.h"
 #include "base/i18n/number_formatting.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "content/public/browser/navigation_throttle.h"
diff --git a/content/browser/renderer_host/navigator.cc b/content/browser/renderer_host/navigator.cc
index d976c08..3c736de2 100644
--- a/content/browser/renderer_host/navigator.cc
+++ b/content/browser/renderer_host/navigator.cc
@@ -472,10 +472,11 @@
     RenderFrameHostImpl* render_frame_host,
     mojo::PendingAssociatedRemote<mojom::NavigationClient>* navigation_client,
     blink::LocalFrameToken initiator_frame_token,
-    int initiator_process_id) {
+    int initiator_process_id,
+    base::TimeTicks actual_navigation_start) {
   return controller_.StartHistoryNavigationInNewSubframe(
       render_frame_host, navigation_client, initiator_frame_token,
-      initiator_process_id);
+      initiator_process_id, actual_navigation_start);
 }
 
 void Navigator::DidNavigate(
@@ -1220,7 +1221,8 @@
     if (begin_params->initiator_frame_token &&
         frame_tree_node->navigator().StartHistoryNavigationInNewSubframe(
             frame_tree_node->current_frame_host(), &navigation_client,
-            *begin_params->initiator_frame_token, initiator_process_id)) {
+            *begin_params->initiator_frame_token, initiator_process_id,
+            common_params->actual_navigation_start)) {
       return;
     }
   }
diff --git a/content/browser/renderer_host/navigator.h b/content/browser/renderer_host/navigator.h
index d0ef86ab..fe3ee7a 100644
--- a/content/browser/renderer_host/navigator.h
+++ b/content/browser/renderer_host/navigator.h
@@ -108,7 +108,8 @@
       RenderFrameHostImpl* render_frame_host,
       mojo::PendingAssociatedRemote<mojom::NavigationClient>* navigation_client,
       blink::LocalFrameToken initiator_frame_token,
-      int initiator_process_id);
+      int initiator_process_id,
+      base::TimeTicks actual_navigation_start);
 
   // Navigation requests -------------------------------------------------------
 
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index aae3b39..23cd457 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -8343,6 +8343,8 @@
         soft_navigation_heuristics_task_id) {
   OPTIONAL_TRACE_EVENT2("content", "RenderFrameHostImpl::GoToEntryAtOffset",
                         "render_frame_host", this, "offset", offset);
+  // TODO(crbug.com/385170155): Pass the actual start time from the renderer.
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
 
   // Non-user initiated navigations coming from the renderer should be ignored
   // if there is an ongoing browser-initiated navigation.
@@ -8358,7 +8360,8 @@
   // All frames are allowed to navigate the global history.
   if (delegate_->IsAllowedToGoToEntryAtOffset(offset)) {
     frame_tree_->controller().GoToOffsetFromRenderer(
-        offset, this, soft_navigation_heuristics_task_id);
+        offset, this, soft_navigation_heuristics_task_id,
+        actual_navigation_start);
   }
 }
 
@@ -8366,6 +8369,9 @@
     const std::string& key,
     bool has_user_gesture,
     std::optional<blink::scheduler::TaskAttributionId> task_id) {
+  // TODO(crbug.com/385170155): Pass the actual start time from the renderer.
+  base::TimeTicks actual_navigation_start = base::TimeTicks::Now();
+
   // Non-user initiated navigations coming from the renderer should be ignored
   // if there is an ongoing browser-initiated navigation.
   // See https://crbug.com/879965.
@@ -8376,7 +8382,8 @@
           frame_tree_->root()->navigation_request(), has_user_gesture)) {
     return;
   }
-  frame_tree_->controller().NavigateToNavigationApiKey(this, task_id, key);
+  frame_tree_->controller().NavigateToNavigationApiKey(this, task_id, key,
+                                                       actual_navigation_start);
 }
 
 void RenderFrameHostImpl::NavigateEventHandlerPresenceChanged(bool present) {
diff --git a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
index 03abd477..3b64a5a3 100644
--- a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
+++ b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
@@ -827,16 +827,18 @@
     histogram_tester.ExpectTotalCount(
         "Navigation.Timeline.TotalExcludingBeforeUnload.MainFrameOnly.Duration",
         1);
-    // This navigation has no start adjustment or delayed start time, so there
-    // are no IgnoredIncorrectly metrics reported.
+    // This navigation has no start adjustment, but the
+    //`actual_navigation_start` is now recorded at an earlier time (closer to
+    // the start of the navigation) than the web-facing `navigation_start_time`
+    // in NavigateWithoutEntry, so this triggers IgnoredIncorrectly metrics.
     histogram_tester.ExpectTotalCount(
-        "Navigation.Timeline.IgnoredIncorrectly.Duration", 0);
+        "Navigation.Timeline.IgnoredIncorrectly.Duration", 1);
     histogram_tester.ExpectTotalCount(
-        "Navigation.Timeline.IgnoredIncorrectly.MainFrameOnly.Duration", 0);
+        "Navigation.Timeline.IgnoredIncorrectly.MainFrameOnly.Duration", 1);
     histogram_tester.ExpectTotalCount(
-        "Navigation.Timeline.IgnoredIncorrectly.Percentage", 0);
+        "Navigation.Timeline.IgnoredIncorrectly.Percentage", 1);
     histogram_tester.ExpectTotalCount(
-        "Navigation.Timeline.IgnoredIncorrectly.MainFrameOnly.Percentage", 0);
+        "Navigation.Timeline.IgnoredIncorrectly.MainFrameOnly.Percentage", 1);
   }
   // Disable the hang monitor, otherwise there will be a race between the
   // beforeunload dialog and the beforeunload hang timer.
diff --git a/content/browser/renderer_host/render_widget_host_browsertest.cc b/content/browser/renderer_host/render_widget_host_browsertest.cc
index 14bc757..181f68b 100644
--- a/content/browser/renderer_host/render_widget_host_browsertest.cc
+++ b/content/browser/renderer_host/render_widget_host_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/functional/bind.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 58cfd87..df4f06d9 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -25,6 +25,7 @@
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/task/single_thread_task_runner.h"
diff --git a/content/browser/service_worker/service_worker_cache_writer.cc b/content/browser/service_worker/service_worker_cache_writer.cc
index 27b9c170..1da84de 100644
--- a/content/browser/service_worker/service_worker_cache_writer.cc
+++ b/content/browser/service_worker/service_worker_cache_writer.cc
@@ -12,6 +12,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/sequenced_task_runner.h"
 #include "crypto/secure_hash.h"
 #include "crypto/sha2.h"
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 5cf4224..c6a73fa4 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -25,6 +25,7 @@
 #include "base/not_fatal_until.h"
 #include "base/observer_list.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/time/default_clock.h"
diff --git a/content/browser/shared_storage/shared_storage_browsertest_base.cc b/content/browser/shared_storage/shared_storage_browsertest_base.cc
index ed56f9c..1baa0e8 100644
--- a/content/browser/shared_storage/shared_storage_browsertest_base.cc
+++ b/content/browser/shared_storage/shared_storage_browsertest_base.cc
@@ -22,6 +22,7 @@
 #include "base/metrics/statistics_recorder.h"
 #include "base/run_loop.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind.h"
diff --git a/content/browser/shared_storage/shared_storage_worklet_host.cc b/content/browser/shared_storage/shared_storage_worklet_host.cc
index bbdaeee2..d24509d 100644
--- a/content/browser/shared_storage/shared_storage_worklet_host.cc
+++ b/content/browser/shared_storage/shared_storage_worklet_host.cc
@@ -14,6 +14,7 @@
 #include "base/check.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "base/timer/elapsed_timer.h"
diff --git a/content/browser/site_per_process_layout_browsertest.cc b/content/browser/site_per_process_layout_browsertest.cc
index 2aae340..22213cf 100644
--- a/content/browser/site_per_process_layout_browsertest.cc
+++ b/content/browser/site_per_process_layout_browsertest.cc
@@ -5,6 +5,7 @@
 #include <optional>
 
 #include "base/json/json_reader.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/gmock_expected_support.h"
diff --git a/content/browser/site_per_process_scroll_browsertest.cc b/content/browser/site_per_process_scroll_browsertest.cc
index 8894588c..95d2335 100644
--- a/content/browser/site_per_process_scroll_browsertest.cc
+++ b/content/browser/site_per_process_scroll_browsertest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/bind.h"
diff --git a/content/browser/webid/digital_credentials/cross_device_request_dispatcher.cc b/content/browser/webid/digital_credentials/cross_device_request_dispatcher.cc
index 9b1be32..08e372d 100644
--- a/content/browser/webid/digital_credentials/cross_device_request_dispatcher.cc
+++ b/content/browser/webid/digital_credentials/cross_device_request_dispatcher.cc
@@ -7,6 +7,7 @@
 #include "base/functional/bind.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/types/optional_util.h"
 #include "base/values.h"
 #include "components/device_event_log/device_event_log.h"
diff --git a/content/browser/webui/web_ui_navigation_browsertest.cc b/content/browser/webui/web_ui_navigation_browsertest.cc
index 3f7caf6..e1a9d8e 100644
--- a/content/browser/webui/web_ui_navigation_browsertest.cc
+++ b/content/browser/webui/web_ui_navigation_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/command_line.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "content/browser/child_process_security_policy_impl.h"
diff --git a/content/browser/worker_network_isolation_key_browsertest.cc b/content/browser/worker_network_isolation_key_browsertest.cc
index d812265..bd259bc 100644
--- a/content/browser/worker_network_isolation_key_browsertest.cc
+++ b/content/browser/worker_network_isolation_key_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "base/path_service.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
diff --git a/content/public/browser/origin_trial_status_change_details.h b/content/public/browser/origin_trial_status_change_details.h
index 66dfff62..00045df 100644
--- a/content/public/browser/origin_trial_status_change_details.h
+++ b/content/public/browser/origin_trial_status_change_details.h
@@ -7,6 +7,7 @@
 
 #include <string>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/to_string.h"
 #include "content/common/content_export.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
diff --git a/content/public/browser/permission_overrides.cc b/content/public/browser/permission_overrides.cc
index 27c8485..c9e10850 100644
--- a/content/public/browser/permission_overrides.cc
+++ b/content/public/browser/permission_overrides.cc
@@ -5,7 +5,9 @@
 #include "content/public/browser/permission_overrides.h"
 
 #include "base/containers/contains.h"
+#include "base/containers/map_util.h"
 #include "base/types/optional_ref.h"
+#include "base/types/optional_util.h"
 #include "third_party/blink/public/common/permissions/permission_utils.h"
 
 namespace content {
@@ -39,13 +41,13 @@
 std::optional<PermissionStatus> PermissionOverrides::Get(
     const url::Origin& origin,
     blink::PermissionType permission) const {
-  auto current_override = overrides_.find({origin, permission});
-  if (current_override == overrides_.end())
-    current_override = overrides_.find({global_overrides_origin_, permission});
-  if (current_override == overrides_.end())
-    return std::nullopt;
+  const auto* status = base::FindOrNull(overrides_, {origin, permission});
+  if (!status) {
+    status =
+        base::FindOrNull(overrides_, {global_overrides_origin_, permission});
+  }
 
-  return current_override->second;
+  return base::OptionalFromPtr(status);
 }
 
 void PermissionOverrides::Reset(base::optional_ref<const url::Origin> origin) {
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 01c616d5..75a5d885 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -1442,7 +1442,7 @@
 
 BASE_FEATURE(kPwaNavigationCapturing,
              "PwaNavigationCapturing",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 const base::FeatureParam<CapturingState>::Option kNavigationCapturingParams[] =
     {{CapturingState::kDefaultOn, "on_by_default"},
      {CapturingState::kDefaultOff, "off_by_default"},
@@ -1452,7 +1452,7 @@
 
 const base::FeatureParam<CapturingState> kNavigationCapturingDefaultState{
     &kPwaNavigationCapturing, "link_capturing_state",
-    CapturingState::kReimplDefaultOn, &kNavigationCapturingParams};
+    CapturingState::kReimplOnViaClientMode, &kNavigationCapturingParams};
 
 const base::FeatureParam<std::string> kForcedOffCapturingAppsOnFirstNavigation{
     &kPwaNavigationCapturing, "initial_nav_forced_off_apps", ""};
diff --git a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/util/DOMUtils.java b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/util/DOMUtils.java
index ddbc19b2..2c81d22 100644
--- a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/util/DOMUtils.java
+++ b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/util/DOMUtils.java
@@ -207,8 +207,8 @@
         StringBuilder sb = new StringBuilder();
         sb.append("(function() {");
         sb.append(
-                "  return [document.documentElement.clientWidth,"
-                        + " document.documentElement.clientHeight];");
+                "  return [Math.round(window.visualViewport.width),"
+                        + " Math.round(window.visualViewport.height)];");
         sb.append("})();");
 
         String jsonText =
@@ -810,8 +810,7 @@
         TestInputMethodManagerWrapper inputMethodManagerWrapper =
                 TestInputMethodManagerWrapper.create(imeAdapter);
         imeAdapter.setInputMethodManagerWrapper(inputMethodManagerWrapper);
-        // Click the text field node, so that it would get focus.
-        DOMUtils.clickNode(webContents, nodeId);
+        DOMUtils.focusNode(webContents, nodeId);
         CriteriaHelper.pollInstrumentationThread(
                 () -> {
                     try {
diff --git a/content/public/test/content_mock_cert_verifier.cc b/content/public/test/content_mock_cert_verifier.cc
index 985a1659..d999e15b 100644
--- a/content/public/test/content_mock_cert_verifier.cc
+++ b/content/public/test/content_mock_cert_verifier.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/feature_list.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/public/browser/network_service_instance.h"
 #include "content/public/browser/network_service_util.h"
 #include "content/public/common/content_switches.h"
diff --git a/content/public/test/fenced_frame_test_util.cc b/content/public/test/fenced_frame_test_util.cc
index bc4846ab..f2dcd669 100644
--- a/content/public/test/fenced_frame_test_util.cc
+++ b/content/public/test/fenced_frame_test_util.cc
@@ -8,6 +8,7 @@
 #include <string_view>
 #include <vector>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/test/run_until.h"
 #include "base/trace_event/typed_macros.h"
 #include "content/browser/fenced_frame/fenced_frame.h"
diff --git a/content/public/test/network_service_test_helper.cc b/content/public/test/network_service_test_helper.cc
index f0b9906..91a6986 100644
--- a/content/public/test/network_service_test_helper.cc
+++ b/content/public/test/network_service_test_helper.cc
@@ -22,6 +22,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/field_trial.h"
 #include "base/process/process.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/current_thread.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
diff --git a/content/public/test/slow_download_http_response.cc b/content/public/test/slow_download_http_response.cc
index d44896c..9b0df18 100644
--- a/content/public/test/slow_download_http_response.cc
+++ b/content/public/test/slow_download_http_response.cc
@@ -5,6 +5,7 @@
 #include "content/public/test/slow_download_http_response.h"
 
 #include "base/functional/bind.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/bind.h"
diff --git a/content/public/test/url_loader_interceptor.cc b/content/public/test/url_loader_interceptor.cc
index 8575b40..22ed743 100644
--- a/content/public/test/url_loader_interceptor.cc
+++ b/content/public/test/url_loader_interceptor.cc
@@ -17,6 +17,7 @@
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/synchronization/lock.h"
 #include "base/test/bind.h"
 #include "base/threading/thread_restrictions.h"
diff --git a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
index d0d6b8e..726b75e 100644
--- a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
+++ b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
@@ -10,6 +10,7 @@
 #include <vector>
 
 #include "base/containers/adapters.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "content/public/renderer/plugin_ax_tree_action_target_adapter.h"
diff --git a/content/renderer/sandbox_mac_v2_unittest.mm b/content/renderer/sandbox_mac_v2_unittest.mm
index d94e819..ec2754f 100644
--- a/content/renderer/sandbox_mac_v2_unittest.mm
+++ b/content/renderer/sandbox_mac_v2_unittest.mm
@@ -19,6 +19,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/mac/mac_util.h"
 #include "base/process/kill.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/test/multiprocess_test.h"
 #include "base/test/test_timeouts.h"
diff --git a/content/services/auction_worklet/for_debugging_only_bindings.cc b/content/services/auction_worklet/for_debugging_only_bindings.cc
index f346f4c..a775193f 100644
--- a/content/services/auction_worklet/for_debugging_only_bindings.cc
+++ b/content/services/auction_worklet/for_debugging_only_bindings.cc
@@ -13,6 +13,7 @@
 #include "base/functional/bind.h"
 #include "base/functional/callback.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/services/auction_worklet/auction_v8_helper.h"
 #include "content/services/auction_worklet/auction_v8_logger.h"
 #include "content/services/auction_worklet/webidl_compat.h"
diff --git a/content/services/auction_worklet/seller_lazy_filler.cc b/content/services/auction_worklet/seller_lazy_filler.cc
index 5783373..88e6a75e 100644
--- a/content/services/auction_worklet/seller_lazy_filler.cc
+++ b/content/services/auction_worklet/seller_lazy_filler.cc
@@ -9,6 +9,7 @@
 #include <vector>
 
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "content/services/auction_worklet/auction_v8_helper.h"
 #include "content/services/auction_worklet/auction_worklet_util.h"
 #include "gin/converter.h"
diff --git a/content/services/auction_worklet/seller_worklet_unittest.cc b/content/services/auction_worklet/seller_worklet_unittest.cc
index 1bde1b9..9c4f6d2e 100644
--- a/content/services/auction_worklet/seller_worklet_unittest.cc
+++ b/content/services/auction_worklet/seller_worklet_unittest.cc
@@ -16,6 +16,7 @@
 #include "base/feature_list.h"
 #include "base/functional/bind.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
diff --git a/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc b/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc
index d29a50c..addd09c 100644
--- a/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc
+++ b/content/services/auction_worklet/trusted_kvv2_signals_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/functional/bind.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
diff --git a/content/services/auction_worklet/trusted_signals.cc b/content/services/auction_worklet/trusted_signals.cc
index 7add1066..8188d4df 100644
--- a/content/services/auction_worklet/trusted_signals.cc
+++ b/content/services/auction_worklet/trusted_signals.cc
@@ -20,6 +20,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/sequenced_task_runner.h"
 #include "content/common/features.h"
diff --git a/content/shell/app/shell_main_delegate.cc b/content/shell/app/shell_main_delegate.cc
index d2abc51..c214d289 100644
--- a/content/shell/app/shell_main_delegate.cc
+++ b/content/shell/app/shell_main_delegate.cc
@@ -19,6 +19,7 @@
 #include "base/logging.h"
 #include "base/path_service.h"
 #include "base/process/current_process.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/trace_event/trace_log.h"
 #include "build/build_config.h"
 #include "components/crash/core/common/crash_key.h"
diff --git a/content/test/navigation_simulator_impl.cc b/content/test/navigation_simulator_impl.cc
index 76b167d..4d24638 100644
--- a/content/test/navigation_simulator_impl.cc
+++ b/content/test/navigation_simulator_impl.cc
@@ -1351,7 +1351,8 @@
     static_cast<NavigationControllerImpl&>(web_contents_->GetController())
         .GoToOffsetFromRenderer(
             session_history_offset_, render_frame_host_,
-            /*soft_navigation_heuristics_task_id=*/std::nullopt);
+            /*soft_navigation_heuristics_task_id=*/std::nullopt,
+            /*actual_navigation_start=*/base::TimeTicks::Now());
     request_ = render_frame_host_->frame_tree_node()->navigation_request();
     return true;
   }
diff --git a/crypto/hash.cc b/crypto/hash.cc
index 1edc76eb..f588d3a 100644
--- a/crypto/hash.cc
+++ b/crypto/hash.cc
@@ -18,6 +18,8 @@
       return EVP_sha1();
     case HashKind::kSha256:
       return EVP_sha256();
+    case HashKind::kSha384:
+      return EVP_sha384();
     case HashKind::kSha512:
       return EVP_sha512();
   }
diff --git a/crypto/hash.h b/crypto/hash.h
index 6a812bbb..78b6cbe 100644
--- a/crypto/hash.h
+++ b/crypto/hash.h
@@ -19,6 +19,7 @@
 
 inline constexpr size_t kSha1Size = 20;
 inline constexpr size_t kSha256Size = 32;
+inline constexpr size_t kSha384Size = 48;
 inline constexpr size_t kSha512Size = 64;
 
 // Unless your code needs to be generic over HashKind, use one of these
@@ -40,6 +41,7 @@
 enum HashKind {
   kSha1,
   kSha256,
+  kSha384,
   kSha512,
 };
 
@@ -49,6 +51,8 @@
       return kSha1Size;
     case kSha256:
       return kSha256Size;
+    case kSha384:
+      return kSha384Size;
     case kSha512:
       return kSha512Size;
   }
diff --git a/crypto/hash_unittest.cc b/crypto/hash_unittest.cc
index 4f64735..b40dd81 100644
--- a/crypto/hash_unittest.cc
+++ b/crypto/hash_unittest.cc
@@ -58,6 +58,26 @@
   }
 }
 
+TEST(HashTest, Sha384) {
+  // FIPS 180-4 "SHA384ShortMsg" test vector:
+  TestCase c = {
+      .message = "e1bb967b5d379a4aa39050274d09bd93",
+      .digest =
+          "3b04f96965ad2fbabd4df25d5d8c95589d069c312ee48539090b2d7b495d2446c31e"
+          "b2b8f8ffb3012bdce065323d9f48",
+  };
+
+  std::vector<uint8_t> message;
+  std::array<uint8_t, 48> digest;
+  PrepareTestCase(c, &message, digest);
+
+  std::vector<uint8_t> computed_digest(
+      crypto::hash::DigestSizeForHashKind(crypto::hash::kSha384));
+  crypto::hash::Hash(crypto::hash::kSha384, base::as_byte_span(message),
+                     computed_digest);
+  EXPECT_EQ(base::as_byte_span(digest), base::as_byte_span(computed_digest));
+}
+
 TEST(HashTest, Sha512) {
   const auto cases = std::to_array<TestCase>(
       {// FIPS 180-4 "SHA512ShortMsg" test vector:
diff --git a/crypto/hmac.cc b/crypto/hmac.cc
index 7143174..72d918e6 100644
--- a/crypto/hmac.cc
+++ b/crypto/hmac.cc
@@ -118,6 +118,8 @@
       return EVP_sha1();
     case crypto::hash::HashKind::kSha256:
       return EVP_sha256();
+    case crypto::hash::HashKind::kSha384:
+      return EVP_sha384();
     case crypto::hash::HashKind::kSha512:
       return EVP_sha512();
   }
diff --git a/crypto/hmac_unittest.cc b/crypto/hmac_unittest.cc
index 0e512f5..2168048 100644
--- a/crypto/hmac_unittest.cc
+++ b/crypto/hmac_unittest.cc
@@ -394,6 +394,24 @@
   EXPECT_FALSE(crypto::hmac::VerifySha256(key, data, result));
 }
 
+TEST(HMACTest, OneShotSha384) {
+  // RFC 4231 test case 3:
+  std::vector<uint8_t> key(20, 0xaa);
+  std::vector<uint8_t> data(50, 0xdd);
+  std::vector<uint8_t> expected;
+  CHECK(
+      base::HexStringToBytes("88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe"
+                             "83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27",
+                             &expected));
+
+  std::array<uint8_t, crypto::hash::kSha384Size> result;
+  crypto::hmac::Sign(crypto::hash::kSha384, key, data, result);
+  EXPECT_EQ(base::as_byte_span(result), base::as_byte_span(expected));
+  EXPECT_TRUE(crypto::hmac::Verify(crypto::hash::kSha384, key, data, result));
+  result[0] ^= 0x01;
+  EXPECT_FALSE(crypto::hmac::Verify(crypto::hash::kSha384, key, data, result));
+}
+
 TEST(HMACTest, OneShotSha512) {
   // RFC 4231 test case 3:
   std::vector<uint8_t> key(20, 0xaa);
diff --git a/device/vr/android/arcore/ar_compositor_frame_sink.cc b/device/vr/android/arcore/ar_compositor_frame_sink.cc
index d71d654c..01d7be8 100644
--- a/device/vr/android/arcore/ar_compositor_frame_sink.cc
+++ b/device/vr/android/arcore/ar_compositor_frame_sink.cc
@@ -447,16 +447,17 @@
         /*nearest_neighbor=*/false,
         /*secure_output_only=*/false, gfx::ProtectedVideoType::kClear);
 
-    auto renderer_resource = viz::TransferableResource::MakeGpu(
+    viz::TransferableResource::MetadataOverride render_resource_overrides = {
+        .is_overlay_candidate = false,
+        .origin = frame_type == FrameType::kHasWebGlContent
+                      ? kBottomLeft_GrSurfaceOrigin
+                      : kTopLeft_GrSurfaceOrigin,
+    };
+
+    auto renderer_resource = viz::TransferableResource::Make(
         renderer_buffer->shared_image,
-        renderer_buffer->shared_image->GetTextureTarget(),
-        renderer_buffer->sync_token, renderer_buffer->size,
-        viz::SinglePlaneFormat::kRGBA_8888,
-        /*is_overlay_candidate=*/false,
-        viz::TransferableResource::ResourceSource::kAR);
-    renderer_resource.origin = frame_type == FrameType::kHasWebGlContent
-                                   ? kBottomLeft_GrSurfaceOrigin
-                                   : kTopLeft_GrSurfaceOrigin;
+        viz::TransferableResource::ResourceSource::kAR,
+        renderer_buffer->sync_token, render_resource_overrides);
 
     renderer_resource.id = renderer_buffer->id;
     id_to_frame_map_[renderer_buffer->id] = xr_frame;
@@ -490,15 +491,17 @@
                       /*nearest_neighbor=*/false,
                       /*secure_output_only=*/false,
                       gfx::ProtectedVideoType::kClear);
+
+  viz::TransferableResource::MetadataOverride camera_resource_overrides = {
+      .is_overlay_candidate = false,
+      .origin = kBottomLeft_GrSurfaceOrigin,
+  };
+
   // Additionally append to the resource_list
-  auto camera_resource = viz::TransferableResource::MakeGpu(
+  auto camera_resource = viz::TransferableResource::Make(
       camera_buffer->shared_image,
-      camera_buffer->shared_image->GetTextureTarget(),
-      camera_buffer->sync_token, camera_buffer->size,
-      viz::SinglePlaneFormat::kRGBA_8888,
-      /*is_overlay_candidate=*/false,
-      viz::TransferableResource::ResourceSource::kAR);
-  camera_resource.origin = kBottomLeft_GrSurfaceOrigin;
+      viz::TransferableResource::ResourceSource::kAR, camera_buffer->sync_token,
+      camera_resource_overrides);
 
   camera_resource.id = camera_buffer->id;
   id_to_frame_map_[camera_buffer->id] = xr_frame;
diff --git a/device/vr/android/arcore/ar_image_transport.cc b/device/vr/android/arcore/ar_image_transport.cc
index 787e712..c90119c 100644
--- a/device/vr/android/arcore/ar_image_transport.cc
+++ b/device/vr/android/arcore/ar_image_transport.cc
@@ -62,7 +62,7 @@
   // Sanity checks for the camera image buffer.
   DCHECK(camera_image_shared_buffer->shared_image);
   DCHECK(camera_image_shared_buffer->local_eglimage.is_valid());
-  DCHECK_EQ(camera_image_shared_buffer->size, frame_size);
+  DCHECK_EQ(camera_image_shared_buffer->shared_image->size(), frame_size);
 
   // Temporarily change drawing buffer to the camera image buffer.
   if (!camera_image_fbo_) {
diff --git a/device/vr/android/web_xr_presentation_state.h b/device/vr/android/web_xr_presentation_state.h
index 2cd6352..782e9e3 100644
--- a/device/vr/android/web_xr_presentation_state.h
+++ b/device/vr/android/web_xr_presentation_state.h
@@ -92,8 +92,6 @@
   WebXrSharedBuffer();
   ~WebXrSharedBuffer();
 
-  gfx::Size size = {0, 0};
-
   // This owns a single reference to an AHardwareBuffer object.
   base::android::ScopedHardwareBufferHandle scoped_ahb_handle;
 
diff --git a/device/vr/android/xr_image_transport_base.cc b/device/vr/android/xr_image_transport_base.cc
index 4778a7ab..d43b36b 100644
--- a/device/vr/android/xr_image_transport_base.cc
+++ b/device/vr/android/xr_image_transport_base.cc
@@ -85,7 +85,7 @@
                                               WebXrSharedBuffer* buffer) {
   CHECK(IsOnGlThread());
 
-  if (buffer->size == size) {
+  if (buffer->shared_image && buffer->shared_image->size() == size) {
     return false;
   }
 
@@ -140,7 +140,8 @@
 
   DVLOG(2) << ": CreateSharedImage, mailbox="
            << buffer->shared_image->mailbox().ToDebugString()
-           << ", SyncToken=" << buffer->sync_token.ToDebugString();
+           << ", SyncToken=" << buffer->sync_token.ToDebugString()
+           << ", size=" << size.ToString();
 
   // Create an EGLImage for the buffer.
   auto egl_image =
@@ -162,10 +163,6 @@
   glEGLImageTargetTexture2DOES(buffer->local_texture.target, egl_image.get());
   buffer->local_eglimage = std::move(egl_image);
 
-  // Save size to avoid resize next time.
-  DVLOG(1) << __func__ << ": resized to " << size.width() << "x"
-           << size.height();
-  buffer->size = size;
   return true;
 }
 
@@ -195,7 +192,7 @@
   // Sanity check that the lazily created/resized buffer looks valid.
   DCHECK(shared_buffer->shared_image);
   DCHECK(shared_buffer->local_eglimage.is_valid());
-  DCHECK_EQ(shared_buffer->size, frame_size);
+  DCHECK_EQ(shared_buffer->shared_image->size(), frame_size);
 
   // We don't need to create a sync token here. ResizeSharedBuffer has created
   // one on reallocation, including initial buffer creation, and we can use
diff --git a/docs/adding_to_third_party.md b/docs/adding_to_third_party.md
index 50c7ffd..1e0eb4c 100644
--- a/docs/adding_to_third_party.md
+++ b/docs/adding_to_third_party.md
@@ -162,25 +162,7 @@
 
 ### Pulling the code via DEPS
 
-If the code is in a Git repo that you want to mirror, please file an [infra git
-ticket](https://bugs.chromium.org/p/chromium/issues/entry?template=Infra-Git)
-to get the repo mirrored onto chromium.googlesource.com; we don't allow direct
-dependencies on non-Google-hosted repositories, so that we can still build
-if an external repository goes down.
-
-Once the mirror is set up, add an entry to [//DEPS](../DEPS) so that gclient
-will pull it in. If the code is only needed on some platforms, add a condition
-to the deps entry so that developers on other platforms don't pull in things
-they don't need.
-
-Follow the [standard directory structure](#standard-dep-structure) when creating
-a directory for your dependency. If you have a wrong path in
-DEPS and want to change the path of the existing library in DEPS, please ask the
-infrastructure team before committing the change.
-
-Lastly, add the new directory to Chromium's `//third_party/.gitignore`, so that
-it won't show up as untracked files when you run `git status` on the main
-repository.
+See [here](/docs/dependencies.md#adding-dependencies).
 
 ### Checking in the code directly
 
diff --git a/docs/git_submodules.md b/docs/git_submodules.md
index 9347639..c9311cb 100644
--- a/docs/git_submodules.md
+++ b/docs/git_submodules.md
@@ -10,7 +10,7 @@
 
 [TOC]
 
-## A quick introduction to Git submoduldes
+## A quick introduction to Git submodules
 
 [Git submodules](https://git-scm.com/docs/gitsubmodules) are managed via the
 combination of `.gitmodules` files and gitlinks. `.gitmodules` is a text file
diff --git a/extensions/browser/api/socket/app_firewall_hole_manager.cc b/extensions/browser/api/socket/app_firewall_hole_manager.cc
index 9672daf..dd2bb38 100644
--- a/extensions/browser/api/socket/app_firewall_hole_manager.cc
+++ b/extensions/browser/api/socket/app_firewall_hole_manager.cc
@@ -86,15 +86,13 @@
 
 void AppFirewallHole::SetVisible(bool app_visible) {
   app_visible_ = app_visible;
-  if (app_visible_) {
-    if (!firewall_hole_) {
-      chromeos::FirewallHole::Open(
-          type_, port_, "" /*all interfaces*/,
-          base::BindOnce(&AppFirewallHole::OnFirewallHoleOpened,
-                         weak_factory_.GetWeakPtr()));
-    }
-  } else {
+  if (!app_visible_) {
     firewall_hole_.reset();
+  } else if (!firewall_hole_) {
+    chromeos::FirewallHole::Open(
+        type_, port_, /*all interfaces=*/"",
+        base::BindOnce(&AppFirewallHole::OnFirewallHoleOpened,
+                       weak_factory_.GetWeakPtr()));
   }
 }
 
diff --git a/extensions/browser/api/socket/app_firewall_hole_manager.h b/extensions/browser/api/socket/app_firewall_hole_manager.h
index 4fcdd92..fd32bcc 100644
--- a/extensions/browser/api/socket/app_firewall_hole_manager.h
+++ b/extensions/browser/api/socket/app_firewall_hole_manager.h
@@ -91,7 +91,7 @@
   raw_ptr<content::BrowserContext> context_;
   base::ScopedObservation<AppWindowRegistry, AppWindowRegistry::Observer>
       observation_{this};
-  std::multimap<std::string, raw_ptr<AppFirewallHole, CtnExperimental>>
+  std::multimap<ExtensionId, raw_ptr<AppFirewallHole, CtnExperimental>>
       tracked_holes_;
 
   base::WeakPtrFactory<AppFirewallHoleManager> weak_factory_{this};
diff --git a/extensions/browser/extension_function.h b/extensions/browser/extension_function.h
index ec053c3d..5ca5c7ee 100644
--- a/extensions/browser/extension_function.h
+++ b/extensions/browser/extension_function.h
@@ -400,6 +400,9 @@
 
   bool is_from_service_worker() const { return worker_id_.has_value(); }
 
+  bool did_initialize() const { return did_initialize_; }
+  void set_did_initialize() { did_initialize_ = true; }
+
   ResponseType* response_type() const { return response_type_.get(); }
 
   // Whether this function has responded.
@@ -669,6 +672,11 @@
   // returning.  Usually we want to kill the message sending process.
   bool bad_message_ = false;
 
+  // Set to true when an extension function is created successfully without
+  // error. This implies all setup state should be valid on the function for
+  // some assertions made during destruction.
+  bool did_initialize_ = false;
+
   // Set to true when RunWithValidation() is called, to look for callers using
   // the method more than once on a single ExtensionFunction. Note that some
   // ExtensionFunction objects may be created but not run, for example due to
diff --git a/extensions/browser/extension_function_dispatcher.cc b/extensions/browser/extension_function_dispatcher.cc
index eb98168a..742acc3 100644
--- a/extensions/browser/extension_function_dispatcher.cc
+++ b/extensions/browser/extension_function_dispatcher.cc
@@ -399,6 +399,8 @@
         function->extension(), Activity::API_FUNCTION, function->name());
   }
 
+  function->set_did_initialize();
+
   if (violation_error.empty()) {
     // See crbug.com/39178.
     ExtensionsBrowserClient::Get()->PermitExternalProtocolHandler();
@@ -484,7 +486,9 @@
 
   ProcessManager* process_manager = ProcessManager::Get(browser_context_);
   if (extension_function.is_from_service_worker()) {
-    CHECK(extension_function.request_uuid().is_valid());
+    if (extension_function.did_initialize()) {
+      CHECK(extension_function.request_uuid().is_valid());
+    }
     CHECK(extension_function.worker_id());
 
     extension_function.ResetServiceWorkerKeepalive();
diff --git a/extensions/common/api/_api_features.json b/extensions/common/api/_api_features.json
index 744830b..d75a9505 100644
--- a/extensions/common/api/_api_features.json
+++ b/extensions/common/api/_api_features.json
@@ -360,6 +360,7 @@
       "chrome://shopping-insights-side-panel.top-chrome/*",
       "chrome://eche-app/*",
       "chrome://extensions/*",
+      "chrome://extensions-zero-state/*",
       "chrome://file-manager/*",
       "chrome://glic/*",
       "chrome://help-app/*",
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index 607bc7c..84b3afc 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -282,7 +282,11 @@
       "description": "Disable D3D11 on older nVidia drivers",
       "cr_bugs": [349929],
       "os": {
-        "type": "win"
+        "type": "win",
+        "version": {
+          "op": "<",
+          "value": "10.0.22000.0"
+        }
       },
       "vendor_id": "0x10de",
       "driver_version": {
@@ -327,7 +331,11 @@
       "description": "Disable use of Direct3D 11 on Matrox video cards",
       "cr_bugs": [395861],
       "os": {
-        "type": "win"
+        "type": "win",
+        "version": {
+          "op": "<",
+          "value": "10.0.22000.0"
+        }
       },
       "vendor_id": "0x102b",
       "features": [
@@ -339,7 +347,11 @@
       "description": "Disable use of Direct3D 11 on older AMD drivers",
       "cr_bugs": [402134],
       "os": {
-        "type": "win"
+        "type": "win",
+        "version": {
+          "op": "<",
+          "value": "10.0.22000.0"
+        }
       },
       "vendor_id": "0x1002",
       "driver_version": {
@@ -383,7 +395,11 @@
       "description": "Old Intel drivers cannot reliably support D3D11",
       "cr_bugs": [363721],
       "os": {
-        "type": "win"
+        "type": "win",
+        "version": {
+          "op": "<",
+          "value": "10.0.22000.0"
+        }
       },
       "vendor_id": "0x8086",
       "driver_version": {
diff --git a/infra/config/generated/builder-owners/clank-engprod@google.com.txt b/infra/config/generated/builder-owners/clank-engprod@google.com.txt
index 34e424b1..3f9ccfa 100644
--- a/infra/config/generated/builder-owners/clank-engprod@google.com.txt
+++ b/infra/config/generated/builder-owners/clank-engprod@google.com.txt
@@ -22,9 +22,7 @@
 ci/android-14-tablet-landscape-arm64-rel
 ci/android-14-x64-fyi-rel
 ci/android-14-x64-rel
-ci/android-15-tablet-landscape-x64-dbg-tests
 ci/android-15-tablet-landscape-x64-rel
-ci/android-15-tablet-x64-dbg-tests
 ci/android-15-tablet-x64-rel
 ci/android-15-x64-fyi-rel
 ci/android-15-x64-rel
@@ -60,9 +58,7 @@
 try/android-14-tablet-landscape-arm64-rel
 try/android-14-x64-fyi-rel
 try/android-14-x64-rel
-try/android-15-tablet-landscape-x64-dbg
 try/android-15-tablet-landscape-x64-rel
-try/android-15-tablet-x64-dbg
 try/android-15-tablet-x64-rel
 try/android-15-x64-fyi-rel
 try/android-15-x64-rel
diff --git "a/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/properties.json" "b/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/properties.json"
index 500632d..b6fd9cc 100644
--- "a/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/properties.json"
+++ "b/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/properties.json"
@@ -150,78 +150,6 @@
           {
             "builder_id": {
               "bucket": "ci",
-              "builder": "android-15-tablet-landscape-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-15-tablet-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
               "builder": "android-webview-12-x64-dbg-tests",
               "project": "chromium"
             },
@@ -318,16 +246,6 @@
         },
         {
           "bucket": "ci",
-          "builder": "android-15-tablet-landscape-x64-dbg-tests",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
-          "builder": "android-15-tablet-x64-dbg-tests",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
           "builder": "android-webview-12-x64-dbg-tests",
           "project": "chromium"
         },
@@ -351,14 +269,6 @@
           "group": "tryserver.chromium.android"
         },
         {
-          "builder": "android-15-tablet-landscape-x64-dbg",
-          "group": "tryserver.chromium.android"
-        },
-        {
-          "builder": "android-15-tablet-x64-dbg",
-          "group": "tryserver.chromium.android"
-        },
-        {
           "builder": "android-webview-12-x64-dbg",
           "group": "tryserver.chromium.android"
         },
diff --git "a/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/targets/chromium.android.json" "b/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/targets/chromium.android.json"
index baa163d..94a79e83 100644
--- "a/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/targets/chromium.android.json"
+++ "b/infra/config/generated/builders/ci/Android x64 Builder \050dbg\051/targets/chromium.android.json"
@@ -3119,3244 +3119,5 @@
         "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
       }
     ]
-  },
-  "android-15-tablet-landscape-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet_landscape.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      }
-    ]
-  },
-  "android-15-tablet-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "absl_hardening_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "absl_hardening_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-InstallableManagerBrowserTest.CheckManifestWithIconThatIsTooSmall",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "android_browsertests",
-        "test_id_prefix": "ninja://chrome/test:android_browsertests/"
-      },
-      {
-        "args": [
-          "--test-launcher-batch-limit=1",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_sync_integration_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_sync_integration_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_sync_integration_tests",
-        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_webview_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_webview_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_webview_unittests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_unittests/"
-      },
-      {
-        "args": [
-          "-v",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "angle_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "angle_unittests",
-        "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/",
-        "use_isolated_scripts_api": true
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.base_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_common_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_heap_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_heap_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_platform_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_platform_unittests",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_crypto_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_crypto_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_ssl_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_ssl_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "capture_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "capture_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cast_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cast_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cast_unittests",
-        "test_id_prefix": "ninja://media/cast:cast_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cc_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_unit_test_apk.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.content_browsertests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "experiment_percentage": 100,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 40
-        },
-        "test": "content_browsertests",
-        "test_id_prefix": "ninja://content/test:content_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_shell_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_shell_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_shell_test_apk",
-        "test_id_prefix": "ninja://content/shell/android:content_shell_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.content_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crashpad_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crashpad_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crashpad_tests",
-        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crypto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crypto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "device_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "display_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "env_chromium_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "env_chromium_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "env_chromium_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:env_chromium_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "events_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "events_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "fuzzing_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "fuzzing_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "fuzzing_unittests",
-        "test_id_prefix": "ninja://testing/libfuzzer/tests:fuzzing_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gcm_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gcm_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gfx_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gin_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gin_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--use-cmd-decoder=validating",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12_12l_13.gl_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_tests_validating"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_tests_validating",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_tests",
-        "test_id_prefix": "ninja://gpu:gl_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_unittests",
-        "test_id_prefix": "ninja://ui/gl:gl_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "google_apis_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "google_apis_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gpu_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gpu_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.gwp_asan_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gwp_asan_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gwp_asan_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ipc_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ipc_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "latency_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "latency_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "leveldb_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "leveldb_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "leveldb_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:leveldb_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "libjingle_xmpp_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "libjingle_xmpp_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "libjingle_xmpp_unittests",
-        "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "liburlpattern_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "liburlpattern_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "liburlpattern_unittests",
-        "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "media_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "media_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "midi_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "midi_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_test_apk",
-        "test_id_prefix": "ninja://mojo/public/java/system:mojo_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "net_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "net_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-ScopedDirTest.CloseOutOfScope",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "perfetto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "perfetto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "perfetto_unittests",
-        "test_id_prefix": "ninja://third_party/perfetto:perfetto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sandbox_linux_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "services_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "services_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "shell_dialogs_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "shell_dialogs_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "skia_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "skia_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sql_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sql_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "storage_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "storage_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "system_webview_shell_layout_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "system_webview_shell_layout_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "system_webview_shell_layout_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "trichrome_chrome_bundle_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "trichrome_chrome_bundle_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "trichrome_chrome_bundle_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:trichrome_chrome_bundle_smoke_test/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_android_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_android_unittests",
-        "test_id_prefix": "ninja://ui/android:ui_android_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_touch_selection_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_touch_selection_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.unit_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "unit_tests",
-        "test_id_prefix": "ninja://chrome/test:unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "url_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "url_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "viz_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webkit_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webkit_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "blink_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/"
-      },
-      {
-        "args": [
-          "--webview-process-mode=multiple",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_instrumentation_test_apk_multiple_process_mode"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_instrumentation_test_apk_multiple_process_mode",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 5
-        },
-        "test": "webview_instrumentation_test_apk",
-        "test_id_prefix": "ninja://android_webview/test:webview_instrumentation_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_ui_test_app_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_ui_test_app_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "webview_ui_test_app_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "wtf_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "wtf_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "zlib_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "zlib_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ]
   }
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/properties.json b/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/properties.json
deleted file mode 100644
index 91b12273..0000000
--- a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/properties.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android x64 Builder (dbg)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-15-tablet-landscape-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-15-tablet-landscape-x64-dbg-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-15-tablet-landscape-x64-dbg",
-          "group": "tryserver.chromium.android"
-        }
-      ],
-      "retry_failed_shards": true,
-      "retry_invalid_shards": true,
-      "targets_spec_directory": "src/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/targets"
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/targets/chromium.android.json b/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/targets/chromium.android.json
deleted file mode 100644
index 4989ed5f..0000000
--- a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/targets/chromium.android.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
-  "android-15-tablet-landscape-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet_landscape.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-rel/properties.json b/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-rel/properties.json
index cae8b067..8b0577f 100644
--- a/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-rel/properties.json
+++ b/infra/config/generated/builders/ci/android-15-tablet-landscape-x64-rel/properties.json
@@ -77,5 +77,11 @@
     ]
   },
   "builder_group": "chromium.android",
-  "recipe": "chromium"
+  "gardener_rotations": [
+    "android"
+  ],
+  "recipe": "chromium",
+  "sheriff_rotations": [
+    "android"
+  ]
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/properties.json b/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/properties.json
deleted file mode 100644
index fea9a94..0000000
--- a/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/properties.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android x64 Builder (dbg)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-15-tablet-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-15-tablet-x64-dbg-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-15-tablet-x64-dbg",
-          "group": "tryserver.chromium.android"
-        }
-      ],
-      "retry_failed_shards": true,
-      "retry_invalid_shards": true,
-      "targets_spec_directory": "src/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/targets"
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/targets/chromium.android.json b/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/targets/chromium.android.json
deleted file mode 100644
index d92496ea..0000000
--- a/infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/targets/chromium.android.json
+++ /dev/null
@@ -1,3129 +0,0 @@
-{
-  "android-15-tablet-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "absl_hardening_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "absl_hardening_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-InstallableManagerBrowserTest.CheckManifestWithIconThatIsTooSmall",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "android_browsertests",
-        "test_id_prefix": "ninja://chrome/test:android_browsertests/"
-      },
-      {
-        "args": [
-          "--test-launcher-batch-limit=1",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_sync_integration_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_sync_integration_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_sync_integration_tests",
-        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_webview_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_webview_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_webview_unittests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_unittests/"
-      },
-      {
-        "args": [
-          "-v",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "angle_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "angle_unittests",
-        "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/",
-        "use_isolated_scripts_api": true
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.base_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_common_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_heap_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_heap_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_platform_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_platform_unittests",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_crypto_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_crypto_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_ssl_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_ssl_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "capture_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "capture_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cast_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cast_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cast_unittests",
-        "test_id_prefix": "ninja://media/cast:cast_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cc_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_unit_test_apk.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.content_browsertests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "experiment_percentage": 100,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 40
-        },
-        "test": "content_browsertests",
-        "test_id_prefix": "ninja://content/test:content_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_shell_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_shell_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_shell_test_apk",
-        "test_id_prefix": "ninja://content/shell/android:content_shell_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.content_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crashpad_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crashpad_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crashpad_tests",
-        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crypto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crypto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "device_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "display_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "env_chromium_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "env_chromium_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "env_chromium_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:env_chromium_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "events_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "events_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "fuzzing_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "fuzzing_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "fuzzing_unittests",
-        "test_id_prefix": "ninja://testing/libfuzzer/tests:fuzzing_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gcm_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gcm_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gfx_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gin_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gin_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--use-cmd-decoder=validating",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12_12l_13.gl_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_tests_validating"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_tests_validating",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_tests",
-        "test_id_prefix": "ninja://gpu:gl_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_unittests",
-        "test_id_prefix": "ninja://ui/gl:gl_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "google_apis_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "google_apis_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gpu_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gpu_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.gwp_asan_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gwp_asan_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gwp_asan_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ipc_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ipc_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "latency_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "latency_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "leveldb_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "leveldb_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "leveldb_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:leveldb_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "libjingle_xmpp_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "libjingle_xmpp_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "libjingle_xmpp_unittests",
-        "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "liburlpattern_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "liburlpattern_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "liburlpattern_unittests",
-        "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "media_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "media_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "midi_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "midi_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_test_apk",
-        "test_id_prefix": "ninja://mojo/public/java/system:mojo_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "net_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "net_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-ScopedDirTest.CloseOutOfScope",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "perfetto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "perfetto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "perfetto_unittests",
-        "test_id_prefix": "ninja://third_party/perfetto:perfetto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sandbox_linux_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "services_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "services_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "shell_dialogs_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "shell_dialogs_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "skia_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "skia_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sql_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sql_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "storage_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "storage_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "system_webview_shell_layout_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "system_webview_shell_layout_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "system_webview_shell_layout_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "trichrome_chrome_bundle_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "trichrome_chrome_bundle_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "trichrome_chrome_bundle_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:trichrome_chrome_bundle_smoke_test/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_android_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_android_unittests",
-        "test_id_prefix": "ninja://ui/android:ui_android_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_touch_selection_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_touch_selection_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.unit_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "unit_tests",
-        "test_id_prefix": "ninja://chrome/test:unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "url_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "url_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "viz_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webkit_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webkit_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "blink_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/"
-      },
-      {
-        "args": [
-          "--webview-process-mode=multiple",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_instrumentation_test_apk_multiple_process_mode"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_instrumentation_test_apk_multiple_process_mode",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 5
-        },
-        "test": "webview_instrumentation_test_apk",
-        "test_id_prefix": "ninja://android_webview/test:webview_instrumentation_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_ui_test_app_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_ui_test_app_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "webview_ui_test_app_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "wtf_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "wtf_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "zlib_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "zlib_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/gn_args_locations.json b/infra/config/generated/builders/gn_args_locations.json
index ee97ded..8917fd27 100644
--- a/infra/config/generated/builders/gn_args_locations.json
+++ b/infra/config/generated/builders/gn_args_locations.json
@@ -579,9 +579,7 @@
     "android-14-x64-fyi-rel": "try/android-14-x64-fyi-rel/gn-args.json",
     "android-14-x64-rel": "try/android-14-x64-rel/gn-args.json",
     "android-15-chrome-wpt-fyi-rel": "try/android-15-chrome-wpt-fyi-rel/gn-args.json",
-    "android-15-tablet-landscape-x64-dbg": "try/android-15-tablet-landscape-x64-dbg/gn-args.json",
     "android-15-tablet-landscape-x64-rel": "try/android-15-tablet-landscape-x64-rel/gn-args.json",
-    "android-15-tablet-x64-dbg": "try/android-15-tablet-x64-dbg/gn-args.json",
     "android-15-tablet-x64-rel": "try/android-15-tablet-x64-rel/gn-args.json",
     "android-15-webview-wpt-fyi-rel": "try/android-15-webview-wpt-fyi-rel/gn-args.json",
     "android-15-x64-fyi-rel": "try/android-15-x64-fyi-rel/gn-args.json",
diff --git a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/gn-args.json b/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/gn-args.json
deleted file mode 100644
index 61e182bd..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/gn-args.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "gn_args": {
-    "android_static_analysis": "on",
-    "debuggable_apks": false,
-    "enable_android_secondary_abi": true,
-    "ffmpeg_branding": "Chrome",
-    "is_component_build": true,
-    "is_debug": true,
-    "proprietary_codecs": true,
-    "symbol_level": 1,
-    "system_webview_package_name": "com.google.android.webview.debug",
-    "system_webview_shell_package_name": "org.chromium.my_webview_shell",
-    "target_cpu": "x64",
-    "target_os": "android",
-    "use_reclient": false,
-    "use_remoteexec": true,
-    "use_siso": true
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/properties.json b/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/properties.json
deleted file mode 100644
index febdde9..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/properties.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "additional_exclusions": [
-        "infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/gn-args.json"
-      ],
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android x64 Builder (dbg)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-15-tablet-landscape-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "Android x64 Builder (dbg)",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-15-tablet-landscape-x64-dbg-tests",
-          "project": "chromium"
-        }
-      ],
-      "targets_spec_directory": "src/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/targets"
-    }
-  },
-  "$build/siso": {
-    "configs": [
-      "builder",
-      "remote-link"
-    ],
-    "enable_cloud_monitoring": true,
-    "enable_cloud_profiler": true,
-    "enable_cloud_trace": true,
-    "experiments": [],
-    "metrics_project": "chromium-reclient-metrics",
-    "output_local_strategy": "greedy",
-    "project": "rbe-chromium-untrusted",
-    "remote_jobs": 150
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/targets/chromium.android.json b/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/targets/chromium.android.json
deleted file mode 100644
index 85c55688..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/targets/chromium.android.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
-  "Android x64 Builder (dbg)": {},
-  "android-15-tablet-landscape-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet_landscape.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet_landscape.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet_landscape",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet_landscape",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet_landscape"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet_landscape"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/gn-args.json b/infra/config/generated/builders/try/android-15-tablet-x64-dbg/gn-args.json
deleted file mode 100644
index 61e182bd..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/gn-args.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "gn_args": {
-    "android_static_analysis": "on",
-    "debuggable_apks": false,
-    "enable_android_secondary_abi": true,
-    "ffmpeg_branding": "Chrome",
-    "is_component_build": true,
-    "is_debug": true,
-    "proprietary_codecs": true,
-    "symbol_level": 1,
-    "system_webview_package_name": "com.google.android.webview.debug",
-    "system_webview_shell_package_name": "org.chromium.my_webview_shell",
-    "target_cpu": "x64",
-    "target_os": "android",
-    "use_reclient": false,
-    "use_remoteexec": true,
-    "use_siso": true
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/properties.json b/infra/config/generated/builders/try/android-15-tablet-x64-dbg/properties.json
deleted file mode 100644
index 6f5a616..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/properties.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "additional_exclusions": [
-        "infra/config/generated/builders/try/android-15-tablet-x64-dbg/gn-args.json"
-      ],
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android x64 Builder (dbg)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-15-tablet-x64-dbg-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "base_config"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Debug",
-                "config": "main_builder",
-                "target_arch": "intel",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "Android x64 Builder (dbg)",
-                "project": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "Android x64 Builder (dbg)",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-15-tablet-x64-dbg-tests",
-          "project": "chromium"
-        }
-      ],
-      "targets_spec_directory": "src/infra/config/generated/builders/try/android-15-tablet-x64-dbg/targets"
-    }
-  },
-  "$build/siso": {
-    "configs": [
-      "builder",
-      "remote-link"
-    ],
-    "enable_cloud_monitoring": true,
-    "enable_cloud_profiler": true,
-    "enable_cloud_trace": true,
-    "experiments": [],
-    "metrics_project": "chromium-reclient-metrics",
-    "output_local_strategy": "greedy",
-    "project": "rbe-chromium-untrusted",
-    "remote_jobs": 150
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/targets/chromium.android.json b/infra/config/generated/builders/try/android-15-tablet-x64-dbg/targets/chromium.android.json
deleted file mode 100644
index 61c9e56..0000000
--- a/infra/config/generated/builders/try/android-15-tablet-x64-dbg/targets/chromium.android.json
+++ /dev/null
@@ -1,3130 +0,0 @@
-{
-  "Android x64 Builder (dbg)": {},
-  "android-15-tablet-x64-dbg-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "absl_hardening_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "absl_hardening_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-InstallableManagerBrowserTest.CheckManifestWithIconThatIsTooSmall",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "android_browsertests",
-        "test_id_prefix": "ninja://chrome/test:android_browsertests/"
-      },
-      {
-        "args": [
-          "--test-launcher-batch-limit=1",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_sync_integration_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_sync_integration_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_sync_integration_tests",
-        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_webview_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "android_webview_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_webview_unittests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_unittests/"
-      },
-      {
-        "args": [
-          "-v",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "angle_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "angle_unittests",
-        "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/",
-        "use_isolated_scripts_api": true
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.base_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_common_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_heap_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_heap_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_platform_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "blink_platform_unittests",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_crypto_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_crypto_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_ssl_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "boringssl_ssl_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "capture_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "capture_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cast_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cast_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cast_unittests",
-        "test_id_prefix": "ninja://media/cast:cast_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "cc_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_test_apk.filter",
-          "--emulator-debug-tags=all",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--git-revision=${got_revision}",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_unit_test_apk.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "chrome_public_unit_test_apk",
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "components_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.content_browsertests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "experiment_percentage": 100,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_browsertests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 40
-        },
-        "test": "content_browsertests",
-        "test_id_prefix": "ninja://content/test:content_browsertests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_shell_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_shell_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_shell_test_apk",
-        "test_id_prefix": "ninja://content/shell/android:content_shell_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.content_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "content_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crashpad_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crashpad_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crashpad_tests",
-        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crypto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "crypto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "device_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "display_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "env_chromium_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "env_chromium_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "env_chromium_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:env_chromium_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "events_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "events_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "fuzzing_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "fuzzing_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "fuzzing_unittests",
-        "test_id_prefix": "ninja://testing/libfuzzer/tests:fuzzing_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gcm_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gcm_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gfx_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gin_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gin_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--use-cmd-decoder=validating",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12_12l_13.gl_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_tests_validating"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_tests_validating",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_tests",
-        "test_id_prefix": "ninja://gpu:gl_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_unittests",
-        "test_id_prefix": "ninja://ui/gl:gl_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "google_apis_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "google_apis_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gpu_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gpu_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.gwp_asan_unittests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gwp_asan_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gwp_asan_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ipc_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ipc_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "latency_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "latency_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "leveldb_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "leveldb_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "leveldb_unittests",
-        "test_id_prefix": "ninja://third_party/leveldatabase:leveldb_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "libjingle_xmpp_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "libjingle_xmpp_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "libjingle_xmpp_unittests",
-        "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "liburlpattern_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "liburlpattern_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "liburlpattern_unittests",
-        "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "media_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "media_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "midi_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "midi_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_test_apk",
-        "test_id_prefix": "ninja://mojo/public/java/system:mojo_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "mojo_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "net_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "net_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gtest_filter=-ScopedDirTest.CloseOutOfScope",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "perfetto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "perfetto_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "perfetto_unittests",
-        "test_id_prefix": "ninja://third_party/perfetto:perfetto_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sandbox_linux_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "services_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "services_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "shell_dialogs_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "shell_dialogs_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "skia_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "skia_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sql_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "sql_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "storage_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "storage_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "system_webview_shell_layout_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "system_webview_shell_layout_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "system_webview_shell_layout_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "trichrome_chrome_bundle_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "trichrome_chrome_bundle_smoke_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "trichrome_chrome_bundle_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:trichrome_chrome_bundle_smoke_test/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_android_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_android_unittests",
-        "test_id_prefix": "ninja://ui/android:ui_android_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_base_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_touch_selection_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "ui_touch_selection_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.unit_tests.filter",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "unit_tests",
-        "test_id_prefix": "ninja://chrome/test:unit_tests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "url_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "url_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "viz_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webkit_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webkit_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "blink_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/"
-      },
-      {
-        "args": [
-          "--webview-process-mode=multiple",
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_instrumentation_test_apk_multiple_process_mode"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_instrumentation_test_apk_multiple_process_mode",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 5
-        },
-        "test": "webview_instrumentation_test_apk",
-        "test_id_prefix": "ninja://android_webview/test:webview_instrumentation_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_ui_test_app_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webview_ui_test_app_test_apk",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "webview_ui_test_app_test_apk",
-        "test_id_prefix": "ninja://android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "wtf_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "wtf_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/android_35_google_apis_x64_tablet.textpb",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "description": "Run with android_35_google_apis_x64_tablet",
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "zlib_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "zlib_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "dimensions": {
-            "cores": "8",
-            "cpu": "x86-64",
-            "device_os": null,
-            "device_type": null,
-            "os": "Ubuntu-22.04",
-            "pool": "chromium.tests.avd"
-          },
-          "named_caches": [
-            {
-              "name": "android_35_google_apis_x64_tablet",
-              "path": ".android_emulator/android_35_google_apis_x64_tablet"
-            }
-          ],
-          "optional_dimensions": {
-            "60": {
-              "caches": "android_35_google_apis_x64_tablet"
-            }
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/infra/config/generated/cq-usage/mega_cq_bots.txt b/infra/config/generated/cq-usage/mega_cq_bots.txt
index 7cfee42..7bd1e5c5 100644
--- a/infra/config/generated/cq-usage/mega_cq_bots.txt
+++ b/infra/config/generated/cq-usage/mega_cq_bots.txt
@@ -8,6 +8,7 @@
 chromium/try/android-13-x64-rel
 chromium/try/android-14-arm64-rel
 chromium/try/android-14-tablet-landscape-arm64-rel
+chromium/try/android-15-tablet-landscape-x64-rel
 chromium/try/android-15-x64-rel
 chromium/try/android-arm-compile-dbg
 chromium/try/android-arm64-rel
diff --git a/infra/config/generated/health-specs/health-specs.json b/infra/config/generated/health-specs/health-specs.json
index 7ee9cf9..bd8b20eb 100644
--- a/infra/config/generated/health-specs/health-specs.json
+++ b/infra/config/generated/health-specs/health-specs.json
@@ -6752,27 +6752,6 @@
           }
         ]
       },
-      "android-15-tablet-landscape-x64-dbg-tests": {
-        "contact_team_email": "clank-engprod@google.com",
-        "problem_specs": [
-          {
-            "name": "Unhealthy",
-            "period_days": 7,
-            "score": 5,
-            "thresholds": {
-              "_default": "_default"
-            }
-          },
-          {
-            "name": "Low Value",
-            "period_days": 90,
-            "score": 1,
-            "thresholds": {
-              "_default": "_default"
-            }
-          }
-        ]
-      },
       "android-15-tablet-landscape-x64-rel": {
         "contact_team_email": "clank-engprod@google.com",
         "problem_specs": [
@@ -6794,27 +6773,6 @@
           }
         ]
       },
-      "android-15-tablet-x64-dbg-tests": {
-        "contact_team_email": "clank-engprod@google.com",
-        "problem_specs": [
-          {
-            "name": "Unhealthy",
-            "period_days": 7,
-            "score": 5,
-            "thresholds": {
-              "_default": "_default"
-            }
-          },
-          {
-            "name": "Low Value",
-            "period_days": 90,
-            "score": 1,
-            "thresholds": {
-              "_default": "_default"
-            }
-          }
-        ]
-      },
       "android-15-tablet-x64-rel": {
         "contact_team_email": "clank-engprod@google.com",
         "problem_specs": [
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg
index d742cca..e89e0ff 100644
--- a/infra/config/generated/luci/commit-queue.cfg
+++ b/infra/config/generated/luci/commit-queue.cfg
@@ -887,21 +887,11 @@
         disable_reuse_footers: "Include-Ci-Only-Tests"
       }
       builders {
-        name: "chromium/try/android-15-tablet-landscape-x64-dbg"
-        includable_only: true
-        disable_reuse_footers: "Include-Ci-Only-Tests"
-      }
-      builders {
         name: "chromium/try/android-15-tablet-landscape-x64-rel"
         includable_only: true
         disable_reuse_footers: "Include-Ci-Only-Tests"
       }
       builders {
-        name: "chromium/try/android-15-tablet-x64-dbg"
-        includable_only: true
-        disable_reuse_footers: "Include-Ci-Only-Tests"
-      }
-      builders {
         name: "chromium/try/android-15-tablet-x64-rel"
         includable_only: true
         disable_reuse_footers: "Include-Ci-Only-Tests"
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index 3dfff16..3a6dc876 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -4726,7 +4726,7 @@
           use_invocation_timestamp: true
         }
       }
-      description_html: "This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12-x64-dbg\">android-12-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12l-landscape-x64-dbg\">android-12l-landscape-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12l-x64-dbg\">android-12l-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-15-tablet-landscape-x64-dbg\">android-15-tablet-landscape-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-15-tablet-x64-dbg\">android-15-tablet-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-12-x64-dbg\">android-webview-12-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-13-x64-dbg\">android-webview-13-x64-dbg</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
+      description_html: "This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12-x64-dbg\">android-12-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12l-landscape-x64-dbg\">android-12l-landscape-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-12l-x64-dbg\">android-12l-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-12-x64-dbg\">android-webview-12-x64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-13-x64-dbg\">android-webview-13-x64-dbg</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
       shadow_builder_adjustments {
         service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
         pool: "luci.chromium.try"
@@ -38318,116 +38318,6 @@
       }
     }
     builders {
-      name: "android-15-tablet-landscape-x64-dbg-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-22.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-15-tablet-landscape-x64-dbg-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium.use_per_builder_build_dir_name"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "Run chromium tests on Android 15 tablet emulators in Landscape mode.<br/>This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-15-tablet-landscape-x64-dbg\">android-15-tablet-landscape-x64-dbg</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
-      shadow_builder_adjustments {
-        service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-        pool: "luci.chromium.try"
-        dimensions: "free_space:"
-        dimensions: "pool:luci.chromium.try"
-      }
-      contact_team_email: "clank-engprod@google.com"
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/cached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"true\""
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
-        predicates: "has(build.output.properties.ran_tests_retry_shard)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
-        predicates: "has(build.output.properties.ran_tests_without_patch)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/uncached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"false\""
-      }
-    }
-    builders {
       name: "android-15-tablet-landscape-x64-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -38465,8 +38355,14 @@
         '    }'
         '  },'
         '  "builder_group": "chromium.android",'
+        '  "gardener_rotations": ['
+        '    "android"'
+        '  ],'
         '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
+        '  "recipe": "chromium",'
+        '  "sheriff_rotations": ['
+        '    "android"'
+        '  ]'
         '}'
       execution_timeout_secs: 14400
       build_numbers: YES
@@ -38539,116 +38435,6 @@
       }
     }
     builders {
-      name: "android-15-tablet-x64-dbg-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-22.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-15-tablet-x64-dbg-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium.use_per_builder_build_dir_name"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "Run chromium tests on Android 15 tablet emulators.<br/>This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-15-tablet-x64-dbg\">android-15-tablet-x64-dbg</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
-      shadow_builder_adjustments {
-        service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-        pool: "luci.chromium.try"
-        dimensions: "free_space:"
-        dimensions: "pool:luci.chromium.try"
-      }
-      contact_team_email: "clank-engprod@google.com"
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/cached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"true\""
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
-        predicates: "has(build.output.properties.ran_tests_retry_shard)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
-        predicates: "has(build.output.properties.ran_tests_without_patch)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/uncached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"false\""
-      }
-    }
-    builders {
       name: "android-15-tablet-x64-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -82715,118 +82501,6 @@
       }
     }
     builders {
-      name: "android-15-tablet-landscape-x64-dbg"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-22.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-15-tablet-landscape-x64-dbg/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium.use_per_builder_build_dir_name"
-        value: 100
-      }
-      experiments {
-        key: "luci.buildbucket.canary_software"
-        value: 5
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/Android x64 Builder (dbg)\">Android x64 Builder (dbg)</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/android-15-tablet-landscape-x64-dbg-tests\">android-15-tablet-landscape-x64-dbg-tests</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
-      contact_team_email: "clank-engprod@google.com"
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/cached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"true\""
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
-        predicates: "has(build.output.properties.ran_tests_retry_shard)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
-        predicates: "has(build.output.properties.ran_tests_without_patch)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/uncached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"false\""
-      }
-    }
-    builders {
       name: "android-15-tablet-landscape-x64-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -82939,118 +82613,6 @@
       }
     }
     builders {
-      name: "android-15-tablet-x64-dbg"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-22.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-15-tablet-x64-dbg/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium.use_per_builder_build_dir_name"
-        value: 100
-      }
-      experiments {
-        key: "luci.buildbucket.canary_software"
-        value: 5
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/Android x64 Builder (dbg)\">Android x64 Builder (dbg)</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/android-15-tablet-x64-dbg-tests\">android-15-tablet-x64-dbg-tests</a></li></ul><br/>Builder owner: <a href=mailto:clank-engprod@google.com>clank-engprod@google.com</a>"
-      contact_team_email: "clank-engprod@google.com"
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/cached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"true\""
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
-        predicates: "has(build.output.properties.ran_tests_retry_shard)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
-        predicates: "has(build.output.properties.ran_tests_without_patch)"
-      }
-      custom_metric_definitions {
-        name: "/chrome/infra/browser/builds/uncached_count"
-        predicates: "has(build.output.properties.is_cached)"
-        predicates: "string(build.output.properties.is_cached) == \"false\""
-      }
-    }
-    builders {
       name: "android-15-tablet-x64-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg
index 66cd2dd5..e136604 100644
--- a/infra/config/generated/luci/luci-milo.cfg
+++ b/infra/config/generated/luci/luci-milo.cfg
@@ -3491,6 +3491,11 @@
     short_name: "13"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/android-15-tablet-landscape-x64-rel"
+    category: "chromium.android|builder_tester|x64"
+    short_name: "15T-L"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/android-10-x86-rel"
     category: "chromium.android|builder_tester|x86"
     short_name: "10"
@@ -3995,6 +4000,11 @@
     short_name: "13"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/android-15-tablet-landscape-x64-rel"
+    category: "chromium.android|builder_tester|x64"
+    short_name: "15T-L"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/android-10-x86-rel"
     category: "chromium.android|builder_tester|x86"
     short_name: "10"
@@ -8696,16 +8706,6 @@
     short_name: "12L-L"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-15-tablet-x64-dbg-tests"
-    category: "tester|tablet"
-    short_name: "15T"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-15-tablet-landscape-x64-dbg-tests"
-    category: "tester|tablet"
-    short_name: "15T-L"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)"
     category: "tester|webview"
     short_name: "O"
@@ -26143,15 +26143,9 @@
     name: "buildbucket/luci.chromium.try/android-15-chrome-wpt-fyi-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-15-tablet-landscape-x64-dbg"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-15-tablet-landscape-x64-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-15-tablet-x64-dbg"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-15-tablet-x64-rel"
   }
   builders {
@@ -27693,15 +27687,9 @@
     name: "buildbucket/luci.chromium.try/android-15-chrome-wpt-fyi-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-15-tablet-landscape-x64-dbg"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-15-tablet-landscape-x64-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-15-tablet-x64-dbg"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-15-tablet-x64-rel"
   }
   builders {
diff --git a/infra/config/generated/luci/luci-notify.cfg b/infra/config/generated/luci/luci-notify.cfg
index fff7ca59..3c313b7b 100644
--- a/infra/config/generated/luci/luci-notify.cfg
+++ b/infra/config/generated/luci/luci-notify.cfg
@@ -2020,6 +2020,25 @@
   }
   builders {
     bucket: "ci"
+    name: "android-15-tablet-landscape-x64-rel"
+    repository: "https://chromium.googlesource.com/chromium/src"
+  }
+  tree_closers {
+    tree_status_host: "chromium-status.appspot.com"
+    failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|generate_build_files|runhooks|update|\\w*nocompile_test)\\b"
+  }
+}
+notifiers {
+  notifications {
+    on_occurrence: FAILURE
+    failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|generate_build_files|runhooks|update|\\w*nocompile_test)\\b"
+    email {
+      rotation_urls: "https://chrome-ops-rotation-proxy.appspot.com/current/oncallator:chrome-build-sheriff"
+    }
+    template: "tree_closure_email_template"
+  }
+  builders {
+    bucket: "ci"
     name: "android-15-x64-rel"
     repository: "https://chromium.googlesource.com/chromium/src"
   }
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg
index 3b5449d..74f480d0 100644
--- a/infra/config/generated/luci/luci-scheduler.cfg
+++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -3394,15 +3394,6 @@
   }
 }
 job {
-  id: "android-15-tablet-landscape-x64-dbg-tests"
-  realm: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-15-tablet-landscape-x64-dbg-tests"
-  }
-}
-job {
   id: "android-15-tablet-landscape-x64-rel"
   realm: "ci"
   buildbucket {
@@ -3412,15 +3403,6 @@
   }
 }
 job {
-  id: "android-15-tablet-x64-dbg-tests"
-  realm: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-15-tablet-x64-dbg-tests"
-  }
-}
-job {
   id: "android-15-tablet-x64-rel"
   realm: "ci"
   buildbucket {
diff --git a/infra/config/generated/luci/realms.cfg b/infra/config/generated/luci/realms.cfg
index f94c5cf..aff58f10 100644
--- a/infra/config/generated/luci/realms.cfg
+++ b/infra/config/generated/luci/realms.cfg
@@ -243,8 +243,6 @@
         values: "android-12-x64-fyi-rel"
         values: "android-12l-landscape-x64-dbg-tests"
         values: "android-12l-x64-dbg-tests"
-        values: "android-15-tablet-landscape-x64-dbg-tests"
-        values: "android-15-tablet-x64-dbg-tests"
         values: "android-cronet-x64-dbg-12-tests"
         values: "android-cronet-x64-dbg-13-tests"
         values: "android-cronet-x64-dbg-14-tests"
diff --git a/infra/config/generated/sheriff-rotations/android.txt b/infra/config/generated/sheriff-rotations/android.txt
index ba8a9a0..0fb53a0 100644
--- a/infra/config/generated/sheriff-rotations/android.txt
+++ b/infra/config/generated/sheriff-rotations/android.txt
@@ -18,6 +18,7 @@
 ci/android-13-x64-rel
 ci/android-14-arm64-rel
 ci/android-14-tablet-landscape-arm64-rel
+ci/android-15-tablet-landscape-x64-rel
 ci/android-15-x64-rel
 ci/android-androidx-packager
 ci/android-bfcache-rel
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star
index 97ebfab..2e737b5d 100644
--- a/infra/config/subprojects/chromium/ci/chromium.android.star
+++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -4491,9 +4491,7 @@
     targets_settings = targets.settings(
         os_type = targets.os_type.ANDROID,
     ),
-    # TODO(crbug.com/376748979 ): Enable gardening once tests are stable
-    gardener_rotations = args.ignore_default(None),
-    # tree_closing = True,
+    tree_closing = True,
     console_view_entry = consoles.console_view_entry(
         category = "builder_tester|x64",
         short_name = "15T-L",
@@ -4629,176 +4627,6 @@
     execution_timeout = 4 * time.hour,
 )
 
-ci.thin_tester(
-    name = "android-15-tablet-x64-dbg-tests",
-    description_html = "Run chromium tests on Android 15 tablet emulators.",
-    triggered_by = ["Android x64 Builder (dbg)"],
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "main_builder",
-            apply_configs = ["mb"],
-            build_config = builder_config.build_config.DEBUG,
-            target_arch = builder_config.target_arch.INTEL,
-            target_bits = 64,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "base_config",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    targets = targets.bundle(
-        targets = [
-            "android_lff_emulator_gtests",
-        ],
-        mixins = [
-            "15-tablet-x64-emulator",
-            "emulator-8-cores",
-            "has_native_resultdb_integration",
-            "linux-jammy",
-            "x86-64",
-        ],
-        per_test_modifications = {
-            "android_browsertests": targets.mixin(
-                args = [
-                    # https://crbug.com/375086487
-                    "--gtest_filter=-InstallableManagerBrowserTest.CheckManifestWithIconThatIsTooSmall",
-                ],
-                swarming = targets.swarming(
-                    shards = 6,
-                ),
-            ),
-            "base_unittests": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.base_unittests.filter",
-                ],
-            ),
-            "content_browsertests": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.content_browsertests.filter",
-                ],
-                # TODO(crbug.com/388525813) Remove experiment once suite is stable
-                experiment_percentage = 100,
-                swarming = targets.swarming(
-                    shards = 40,
-                ),
-            ),
-            "chrome_public_test_apk": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_test_apk.filter",
-                    "--emulator-debug-tags=all",
-                ],
-            ),
-            "chrome_public_unit_test_apk": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet.chrome_public_unit_test_apk.filter",
-                ],
-            ),
-            "content_unittests": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.content_unittests.filter",
-                ],
-            ),
-            "perfetto_unittests": targets.mixin(
-                args = [
-                    # TODO(crbug.com/40201873): Fix the failed test
-                    "--gtest_filter=-ScopedDirTest.CloseOutOfScope",
-                ],
-            ),
-            "gl_tests_validating": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12_12l_13.gl_tests.filter",
-                ],
-            ),
-            "gwp_asan_unittests": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_16.gwp_asan_unittests.filter",
-                ],
-            ),
-            "unit_tests": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_14_15_16.unit_tests.filter",
-                ],
-            ),
-        },
-    ),
-    targets_settings = targets.settings(
-        os_type = targets.os_type.ANDROID,
-    ),
-    # TODO(crbug.com/376748979 ): Enable gardening once tests are stable
-    gardener_rotations = args.ignore_default(None),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|tablet",
-        short_name = "15T",
-    ),
-    contact_team_email = "clank-engprod@google.com",
-)
-
-ci.thin_tester(
-    name = "android-15-tablet-landscape-x64-dbg-tests",
-    description_html = "Run chromium tests on Android 15 tablet emulators " +
-                       "in Landscape mode.",
-    triggered_by = ["Android x64 Builder (dbg)"],
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "main_builder",
-            apply_configs = ["mb"],
-            build_config = builder_config.build_config.DEBUG,
-            target_arch = builder_config.target_arch.INTEL,
-            target_bits = 64,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "base_config",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    targets = targets.bundle(
-        targets = [
-            "android_lff_landscape_emulator_gtests",
-        ],
-        mixins = [
-            "15-tablet-landscape-x64-emulator",
-            "emulator-8-cores",
-            "has_native_resultdb_integration",
-            "linux-jammy",
-            "x86-64",
-        ],
-        per_test_modifications = {
-            "chrome_public_test_apk": targets.mixin(
-                args = [
-                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_15_tablet_landscape.chrome_public_test_apk.filter",
-                    "--emulator-debug-tags=all",
-                ],
-            ),
-        },
-    ),
-    targets_settings = targets.settings(
-        os_type = targets.os_type.ANDROID,
-    ),
-    # TODO(crbug.com/376748979 ): Enable gardening once tests are stable
-    gardener_rotations = args.ignore_default(None),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|tablet",
-        short_name = "15T-L",
-    ),
-    contact_team_email = "clank-engprod@google.com",
-)
-
 ci.builder(
     name = "android-webview-13-x64-hostside-rel",
     branch_selector = branches.selector.ANDROID_BRANCHES,
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
index 9c906bb..9aabb6e9 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -389,38 +389,6 @@
 )
 
 try_.builder(
-    name = "android-15-tablet-x64-dbg",
-    mirrors = [
-        "ci/Android x64 Builder (dbg)",
-        "ci/android-15-tablet-x64-dbg-tests",
-    ],
-    gn_args = gn_args.config(
-        configs = [
-            "ci/Android x64 Builder (dbg)",
-            "debug_try_builder",
-        ],
-    ),
-    contact_team_email = "clank-engprod@google.com",
-    siso_remote_jobs = siso.remote_jobs.LOW_JOBS_FOR_CQ,
-)
-
-try_.builder(
-    name = "android-15-tablet-landscape-x64-dbg",
-    mirrors = [
-        "ci/Android x64 Builder (dbg)",
-        "ci/android-15-tablet-landscape-x64-dbg-tests",
-    ],
-    gn_args = gn_args.config(
-        configs = [
-            "ci/Android x64 Builder (dbg)",
-            "debug_try_builder",
-        ],
-    ),
-    contact_team_email = "clank-engprod@google.com",
-    siso_remote_jobs = siso.remote_jobs.LOW_JOBS_FOR_CQ,
-)
-
-try_.builder(
     name = "android-arm-compile-dbg",
     branch_selector = branches.selector.ANDROID_BRANCHES,
     mirrors = ["ci/Android arm Builder (dbg)"],
diff --git a/ios/build/tools/setup-gn.py b/ios/build/tools/setup-gn.py
index f6b38b38..1b2ffdd2 100755
--- a/ios/build/tools/setup-gn.py
+++ b/ios/build/tools/setup-gn.py
@@ -152,8 +152,16 @@
     args.append(
         ('target_environment', self.TARGET_ENVIRONMENT_VALUES[self._target]))
     args.append(('target_platform', self.TARGET_PLATFORM_VALUES[self._target]))
-    if self.TARGET_PLATFORM_VALUES[self._target] == '"tvos"':
+
+    use_blink = self._settings.getboolean('gn_args', 'use_blink')
+
+    if self.TARGET_PLATFORM_VALUES[self._target] == '"tvos"' and not use_blink:
       args.append(('use_blink', True))
+      use_blink = True
+
+    has_symbol_level = self._settings.has_option('gn_args', 'symbol_level')
+    if use_blink and is_optim and not has_symbol_level:
+      args.append(('symbol_level', 1))
 
     # Add user overrides after the other configurations so that they can
     # refer to them and override them.
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/BUILD.gn b/ios/chrome/browser/authentication/ui_bundled/account_menu/BUILD.gn
index 63d248b..016df0d7 100644
--- a/ios/chrome/browser/authentication/ui_bundled/account_menu/BUILD.gn
+++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/BUILD.gn
@@ -37,6 +37,7 @@
     "//ios/chrome/browser/authentication/ui_bundled/enterprise:enterprise_utils",
     "//ios/chrome/browser/authentication/ui_bundled/signin:constants",
     "//ios/chrome/browser/authentication/ui_bundled/signin:signin_headers",
+    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
     "//ios/chrome/browser/authentication/ui_bundled/signout_action_sheet",
     "//ios/chrome/browser/authentication/ui_bundled/trusted_vault_reauthentication",
     "//ios/chrome/browser/ntp/ui_bundled:feature_flags",
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm
index ed817a73..4e2f3f4 100644
--- a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm
@@ -29,6 +29,7 @@
 #import "ios/chrome/browser/authentication/ui_bundled/authentication_flow/authentication_flow.h"
 #import "ios/chrome/browser/authentication/ui_bundled/continuation.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signout_action_sheet/signout_action_sheet_coordinator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/trusted_vault_reauthentication/trusted_vault_reauthentication_coordinator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/trusted_vault_reauthentication/trusted_vault_reauthentication_coordinator_delegate.h"
@@ -127,6 +128,9 @@
   GURL _url;
   TrustedVaultReauthenticationCoordinator*
       _trustedVaultReauthenticationCoordinator;
+  // While this value is set, the scene state considers the sign-in to be in
+  // progress.
+  std::unique_ptr<SigninInProgress> _signinInProgress;
 }
 
 - (instancetype)initWithBaseViewController:(UIViewController*)viewController
@@ -354,6 +358,7 @@
 
 - (AuthenticationFlow*)authenticationFlow:(id<SystemIdentity>)identity
                                anchorRect:(CGRect)anchorRect {
+  _signinInProgress = [self.sceneState createSigninInProgress];
   AuthenticationFlow* authenticationFlow = [[AuthenticationFlow alloc]
                initWithBrowser:self.browser
                       identity:identity
@@ -367,6 +372,11 @@
   return authenticationFlow;
 }
 
+- (void)signinFinished {
+  CHECK(_signinInProgress, base::NotFatalUntil::M147);
+  _signinInProgress.reset();
+}
+
 #pragma mark - SyncErrorSettingsCommandHandler
 
 - (void)openPassphraseDialogWithModalPresentation:(BOOL)presentModally {
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator.mm b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator.mm
index a632a24f..112ce90 100644
--- a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator.mm
@@ -415,6 +415,7 @@
 
 - (void)authenticationFlowDidSignInInSameProfileWithResult:
     (SigninCoordinatorResult)result {
+  [_delegate signinFinished];
   if (_accessPoint == AccountMenuAccessPoint::kWeb &&
       result == SigninCoordinatorResultSuccess) {
     GetApplicationContext()->GetLocalState()->SetBoolean(
@@ -454,6 +455,7 @@
 
 - (ChangeProfileContinuation)authenticationFlowWillChangeProfile {
   _authenticationFlow = nil;
+  [_delegate signinFinished];
   switch (_accessPoint) {
     case AccountMenuAccessPoint::kNewTabPage:
       return CreateChangeProfileOpensNTPContinuation();
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_delegate.h b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_delegate.h
index d3ac9db12..99756517 100644
--- a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_delegate.h
+++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_delegate.h
@@ -7,6 +7,7 @@
 
 #import <Foundation/Foundation.h>
 
+#import <memory>
 #import <string_view>
 
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_constants.h"
@@ -15,6 +16,7 @@
 
 @class AccountMenuMediator;
 @class AuthenticationFlow;
+class SigninInProgress;
 @protocol SystemIdentity;
 
 @protocol AccountMenuMediatorDelegate <NSObject>
@@ -49,6 +51,8 @@
 // The user tapped to open Settings page.
 - (void)didTapSettingsButton;
 
+// The signin is finished.
+- (void)signinFinished;
 @end
 
 #endif  // IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_ACCOUNT_MENU_ACCOUNT_MENU_MEDIATOR_DELEGATE_H_
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_unittests.mm b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_unittests.mm
index a93734f..28056dd 100644
--- a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_unittests.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_mediator_unittests.mm
@@ -488,6 +488,7 @@
 
   OCMExpect([consumer_mock_ switchingStopped]);
   OCMExpect([consumer_mock_ setUserInteractionsEnabled:YES]);
+  OCMExpect([delegate_mock_ signinFinished]);
   // Simulate AuthenticationFlow failure.
   [authentication_flow_request_helper
       authenticationFlowDidSignInInSameProfileWithResult:
@@ -533,6 +534,7 @@
   // Expect that the consumer unlocks the UI.
   OCMExpect([consumer_mock_ switchingStopped]);
   OCMExpect([consumer_mock_ setUserInteractionsEnabled:YES]);
+  OCMExpect([delegate_mock_ signinFinished]);
   [authentication_flow_request_helper
       authenticationFlowDidSignInInSameProfileWithResult:
           SigninCoordinatorResult::SigninCoordinatorResultInterrupted];
@@ -579,6 +581,7 @@
                       withResult:SigninCoordinatorResultSuccess
                   signedIdentity:kSecondaryIdentity
                  userTappedClose:NO]);
+  OCMExpect([delegate_mock_ signinFinished]);
   [authentication_flow_request_helper
       authenticationFlowDidSignInInSameProfileWithResult:
           SigninCoordinatorResultSuccess];
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/BUILD.gn b/ios/chrome/browser/authentication/ui_bundled/signin/BUILD.gn
index 3d5cd03..6d16f1e 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/BUILD.gn
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/BUILD.gn
@@ -45,6 +45,7 @@
   public_deps = [ ":constants" ]
   deps = [
     ":signin_headers",
+    ":signin_in_progress",
     ":signin_protected",
     ":signin_screen_provider",
     "//components/feature_engagement/public",
@@ -148,6 +149,14 @@
   ]
 }
 
+source_set("signin_in_progress") {
+  sources = [
+    "signin_in_progress.h",
+    "signin_in_progress.mm",
+  ]
+  deps = [ "//ios/chrome/browser/shared/public/commands" ]
+}
+
 source_set("constants") {
   sources = [
     "signin_constants.h",
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/BUILD.gn b/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/BUILD.gn
index 42d322d8..6563b1b 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/BUILD.gn
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/BUILD.gn
@@ -69,15 +69,19 @@
     "//components/signin/public/identity_manager",
     "//components/signin/public/identity_manager/objc",
     "//components/sync_preferences:test_support",
+    "//ios/chrome/app/profile",
     "//ios/chrome/browser/authentication/ui_bundled",
     "//ios/chrome/browser/authentication/ui_bundled:continuation_test",
     "//ios/chrome/browser/authentication/ui_bundled/authentication_flow",
+    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
     "//ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_default_account",
     "//ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_sheet",
+    "//ios/chrome/browser/shared/coordinator/scene:scene_state_header",
     "//ios/chrome/browser/shared/model/application_context",
     "//ios/chrome/browser/shared/model/browser/test:test_support",
     "//ios/chrome/browser/shared/model/prefs:pref_names",
     "//ios/chrome/browser/shared/model/profile/test",
+    "//ios/chrome/browser/shared/public/commands",
     "//ios/chrome/browser/signin/model",
     "//ios/chrome/browser/signin/model:authentication_service",
     "//ios/chrome/browser/signin/model:authentication_service_factory",
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_promo_signin_coordinator_unittest.mm b/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_promo_signin_coordinator_unittest.mm
index 4c52c7d1e1..0aee71c 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_promo_signin_coordinator_unittest.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_promo_signin_coordinator_unittest.mm
@@ -7,12 +7,17 @@
 #import <UIKit/UIKit.h>
 
 #import "components/signin/core/browser/account_reconcilor.h"
+#import "ios/chrome/app/profile/profile_state.h"
 #import "ios/chrome/browser/authentication/ui_bundled/authentication_test_util.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_promo_signin_mediator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_navigation_controller.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
+#import "ios/chrome/browser/shared/coordinator/scene/scene_state.h"
 #import "ios/chrome/browser/shared/model/browser/test/test_browser.h"
 #import "ios/chrome/browser/shared/model/profile/test/test_profile_ios.h"
+#import "ios/chrome/browser/shared/public/commands/application_commands.h"
+#import "ios/chrome/browser/shared/public/commands/command_dispatcher.h"
 #import "ios/web/public/test/web_task_environment.h"
 #import "testing/platform_test.h"
 #import "third_party/ocmock/OCMock/OCMock.h"
@@ -23,9 +28,15 @@
 class ConsistencyPromoSigninCoordinatorTest : public PlatformTest {
  public:
   ConsistencyPromoSigninCoordinatorTest() {
+    // The profile state will receive UI blocker request. They are not tested
+    // here, so it’s a non-strict mock.
+    profile_state_ = OCMClassMock([ProfileState class]);
+    scene_state_ = [[SceneState alloc] initWithAppState:nil];
+    scene_state_.profileState = profile_state_;
     profile_ = TestProfileIOS::Builder().Build();
-    browser_ = std::make_unique<TestBrowser>(profile_.get());
+    browser_ = std::make_unique<TestBrowser>(profile_.get(), scene_state_);
     base_view_controller_mock_ = OCMStrictClassMock([UIViewController class]);
+
     coordinator_ = [[ConsistencyPromoSigninCoordinator alloc]
         initWithBaseViewController:base_view_controller_mock_
                            browser:browser_.get()
@@ -45,6 +56,7 @@
     EXPECT_OCMOCK_VERIFY((id)base_view_controller_mock_);
     EXPECT_OCMOCK_VERIFY((id)consistency_default_account_coordinator_mock_);
     EXPECT_OCMOCK_VERIFY((id)consistency_sheet_navigation_controller_mock_);
+    EXPECT_OCMOCK_VERIFY((id)profile_state_);
     PlatformTest::TearDown();
   }
 
@@ -138,11 +150,14 @@
       consistency_default_account_coordinator_mock_ = nil;
   ConsistencySheetNavigationController*
       consistency_sheet_navigation_controller_mock_ = nil;
+  SceneState* scene_state_;
 
  private:
   web::WebTaskEnvironment task_environment_;
   std::unique_ptr<TestProfileIOS> profile_;
   std::unique_ptr<TestBrowser> browser_;
+  // Required for UI blocker.
+  ProfileState* profile_state_;
 };
 
 // Tests that all coordinators are stopped and delegates are set to nil when
@@ -183,7 +198,10 @@
   EXPECT_TRUE(signin_completion_called);
   EXPECT_EQ(SigninCoordinatorResultCanceledByUser, coordinator_result);
   EXPECT_EQ(nil, signed_in_identity);
+  EXPECT_TRUE(scene_state_.signinInProgress);
   [coordinator_ stop];
+  coordinator_ = nil;
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
 
 }  // namespace
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.mm b/ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.mm
index 4c82440..e5f0a3f 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.mm
@@ -18,14 +18,18 @@
 #import "ios/chrome/browser/authentication/ui_bundled/signin/logging/first_run_signin_logger.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_constants.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_history_sync/signin_and_history_sync_coordinator.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_screen_provider.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/two_screens_signin_coordinator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/trusted_vault_reauthentication/trusted_vault_reauthentication_coordinator.h"
 #import "ios/chrome/browser/authentication/ui_bundled/trusted_vault_reauthentication/trusted_vault_reauthentication_coordinator_delegate.h"
 #import "ios/chrome/browser/shared/coordinator/chrome_coordinator/animated_coordinator.h"
+#import "ios/chrome/browser/shared/coordinator/scene/scene_state.h"
 #import "ios/chrome/browser/shared/model/browser/browser.h"
 #import "ios/chrome/browser/shared/model/prefs/pref_names.h"
 #import "ios/chrome/browser/shared/model/profile/profile_ios.h"
+#import "ios/chrome/browser/shared/public/commands/application_commands.h"
+#import "ios/chrome/browser/shared/public/commands/command_dispatcher.h"
 #import "ios/chrome/browser/shared/public/commands/show_signin_command.h"
 #import "ios/chrome/browser/shared/public/features/features.h"
 #import "ios/chrome/browser/signin/model/chrome_account_manager_service_factory.h"
@@ -33,7 +37,9 @@
 using signin_metrics::AccessPoint;
 using signin_metrics::PromoAction;
 
-@implementation SigninCoordinator
+@implementation SigninCoordinator {
+  std::unique_ptr<SigninInProgress> _signinInProgress;
+}
 
 - (instancetype)initWithBaseViewController:(UIViewController*)viewController
                                    browser:(Browser*)browser
@@ -45,6 +51,7 @@
     _contextStyle = contextStyle;
     _accessPoint = accessPoint;
     _creationTimeTicks = base::TimeTicks::Now();
+    _signinInProgress = [self.sceneState createSigninInProgress];
   }
   return self;
 }
@@ -395,6 +402,13 @@
   DCHECK(self.signinCompletion);
 }
 
+#pragma mark - AnimatedCoordinator
+
+- (void)stopAnimated:(BOOL)animated {
+  _signinInProgress.reset();
+  [super stopAnimated:animated];
+}
+
 #pragma mark - Protected
 
 - (void)runCompletionWithSigninResult:(SigninCoordinatorResult)signinResult
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h b/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h
new file mode 100644
index 0000000..f749c613
--- /dev/null
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h
@@ -0,0 +1,35 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_SIGNIN_SIGNIN_IN_PROGRESS_H_
+#define IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_SIGNIN_SIGNIN_IN_PROGRESS_H_
+
+#import <Foundation/Foundation.h>
+
+@protocol ApplicationCommands;
+class SigninInProgress;
+
+@protocol SignInInProgressAudience <NSObject>
+
+// Records that an extra sign-in process started.
+- (void)signInStarted;
+
+// Records that a sign-in is done.
+- (void)signinFinished;
+
+@end
+
+// While an object of this class is alive, the SceneController knows
+// a sign-in operation is in progress and blocks the UI of the other scenes.
+class SigninInProgress {
+ public:
+  explicit SigninInProgress(id<SignInInProgressAudience> audience);
+  ~SigninInProgress();
+
+ private:
+  // The audience.
+  __weak id<SignInInProgressAudience> audience_;
+};
+
+#endif  // IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_SIGNIN_SIGNIN_IN_PROGRESS_H_
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.mm b/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.mm
new file mode 100644
index 0000000..25e4569
--- /dev/null
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.mm
@@ -0,0 +1,17 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
+
+#import "ios/chrome/browser/shared/public/commands/application_commands.h"
+
+SigninInProgress::SigninInProgress(id<SignInInProgressAudience> audience)
+    : audience_(audience) {
+  DCHECK(audience_);
+  [audience_ signInStarted];
+}
+
+SigninInProgress::~SigninInProgress() {
+  [audience_ signinFinished];
+}
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/BUILD.gn b/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/BUILD.gn
index be5fb755..a5a0837d 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/BUILD.gn
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/BUILD.gn
@@ -37,13 +37,17 @@
     "//base/test:test_support",
     "//components/sync:test_support",
     "//components/sync/base:features",
+    "//ios/chrome/app/profile",
     "//ios/chrome/browser/authentication/ui_bundled:continuation_test",
     "//ios/chrome/browser/authentication/ui_bundled/fullscreen_signin_screen/ui",
     "//ios/chrome/browser/authentication/ui_bundled/history_sync:ui",
     "//ios/chrome/browser/authentication/ui_bundled/signin:signin_headers",
+    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
+    "//ios/chrome/browser/shared/coordinator/scene:scene_state_header",
     "//ios/chrome/browser/shared/model/application_context",
     "//ios/chrome/browser/shared/model/browser/test:test_support",
     "//ios/chrome/browser/shared/model/profile/test",
+    "//ios/chrome/browser/shared/public/commands",
     "//ios/chrome/browser/signin/model:authentication_service",
     "//ios/chrome/browser/signin/model:authentication_service_factory",
     "//ios/chrome/browser/signin/model:fake_system_identity",
@@ -53,6 +57,7 @@
     "//ios/chrome/browser/sync/model:test_support",
     "//ios/chrome/test:test_support",
     "//ios/web/public/test",
+    "//third_party/ocmock",
   ]
 }
 
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/two_screens_signin_coordinator_unittest.mm b/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/two_screens_signin_coordinator_unittest.mm
index 310e4bb..c311d9e5 100644
--- a/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/two_screens_signin_coordinator_unittest.mm
+++ b/ios/chrome/browser/authentication/ui_bundled/signin/two_screens_signin/two_screens_signin_coordinator_unittest.mm
@@ -12,13 +12,18 @@
 #import "base/test/metrics/histogram_tester.h"
 #import "base/test/metrics/user_action_tester.h"
 #import "components/sync/test/test_sync_service.h"
+#import "ios/chrome/app/profile/profile_state.h"
 #import "ios/chrome/browser/authentication/ui_bundled/authentication_test_util.h"
 #import "ios/chrome/browser/authentication/ui_bundled/fullscreen_signin_screen/ui/fullscreen_signin_screen_view_controller.h"
 #import "ios/chrome/browser/authentication/ui_bundled/history_sync/history_sync_view_controller.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_constants.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
+#import "ios/chrome/browser/shared/coordinator/scene/scene_state.h"
 #import "ios/chrome/browser/shared/model/application_context/application_context.h"
 #import "ios/chrome/browser/shared/model/browser/test/test_browser.h"
 #import "ios/chrome/browser/shared/model/profile/test/test_profile_ios.h"
+#import "ios/chrome/browser/shared/public/commands/application_commands.h"
+#import "ios/chrome/browser/shared/public/commands/command_dispatcher.h"
 #import "ios/chrome/browser/signin/model/authentication_service.h"
 #import "ios/chrome/browser/signin/model/authentication_service_factory.h"
 #import "ios/chrome/browser/signin/model/fake_authentication_service_delegate.h"
@@ -30,12 +35,19 @@
 #import "ios/web/public/test/web_task_environment.h"
 #import "testing/gtest_mac.h"
 #import "testing/platform_test.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+#import "third_party/ocmock/gtest_support.h"
 
 // Test cases for the TwoScreensSigninCoordinator.
 class TwoScreensSigninCoordinatorTest : public PlatformTest {
  public:
   TwoScreensSigninCoordinatorTest() {
     TestProfileIOS::Builder builder;
+    // The profile state will receive UI blocker request. They are not tested
+    // here, so it’s a non-strict mock.
+    profile_state_ = OCMClassMock([ProfileState class]);
+    scene_state_ = [[SceneState alloc] initWithAppState:nil];
+    scene_state_.profileState = profile_state_;
     builder.AddTestingFactory(
         AuthenticationServiceFactory::GetInstance(),
         AuthenticationServiceFactory::GetFactoryWithDelegate(
@@ -47,7 +59,7 @@
               return std::make_unique<syncer::TestSyncService>();
             }));
     profile_ = std::move(builder).Build();
-    browser_ = std::make_unique<TestBrowser>(profile_.get());
+    browser_ = std::make_unique<TestBrowser>(profile_.get(), scene_state_);
 
     NSUserDefaults* standardDefaults = [NSUserDefaults standardUserDefaults];
     [standardDefaults removeObjectForKey:kDisplayedSSORecallPromoCountKey];
@@ -68,6 +80,10 @@
     system_identity_manager->AddIdentity(fake_identity_);
   }
 
+  ~TwoScreensSigninCoordinatorTest() override {
+    EXPECT_OCMOCK_VERIFY((id)profile_state_);
+  }
+
   // Initalize coordinator_ up to start.
   // Expects it receives a completion with the expected_result and
   // expected_signin_completion_identity_
@@ -147,6 +163,7 @@
  protected:
   // Stops the coordinator and unset it.
   void StopCoordinator() {
+    EXPECT_TRUE(scene_state_.signinInProgress);
     [coordinator_ stop];
     coordinator_ = nil;
   }
@@ -160,6 +177,11 @@
   base::UserActionTester user_actions_;
   UIWindow* window_;
   FakeSystemIdentity* fake_identity_ = nil;
+  SceneState* scene_state_;
+
+ private:
+  // Required for UI blocker.
+  ProfileState* profile_state_;
 };
 
 #pragma mark - Tests
@@ -191,6 +213,7 @@
   histogram_tester.ExpectUniqueSample<signin_metrics::AccessPoint>(
       "Signin.SigninStartedAccessPoint", signin_metrics::AccessPoint::kSettings,
       1);
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
 
 // Tests that the screens are not presented when the user has already signed in
@@ -220,6 +243,7 @@
   histogram_tester.ExpectUniqueSample<signin_metrics::AccessPoint>(
       "Signin.SigninStartedAccessPoint", signin_metrics::AccessPoint::kSettings,
       0);
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
 
 // Tests that stopping the coordinator before it is done will interrupt it.
@@ -233,6 +257,7 @@
   EXPECT_FALSE(completion_block_done_);
 
   ExpectNoUpgradePromoHistogram(&histogram_tester);
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
 
 // Tests that the user can cancel without signing in.
@@ -248,6 +273,7 @@
   ASSERT_TRUE(base::test::ios::WaitUntilConditionOrTimeout(
       base::Seconds(1), true, completion_condition));
   ExpectNoUpgradePromoHistogram(&histogram_tester);
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
 
 // Tests that the user can swipe to dismiss and that a user action is recorded.
@@ -270,4 +296,5 @@
   EXPECT_EQ(1, user_actions_.GetActionCount("Signin_TwoScreens_SwipeDismiss"));
 
   ExpectNoUpgradePromoHistogram(&histogram_tester);
+  EXPECT_FALSE(scene_state_.signinInProgress);
 }
diff --git a/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm b/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm
index aa6541e..4131da89 100644
--- a/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm
+++ b/ios/chrome/browser/browser_view/ui_bundled/browser_coordinator.mm
@@ -220,6 +220,7 @@
 #import "ios/chrome/browser/shared/public/commands/enhanced_calendar_commands.h"
 #import "ios/chrome/browser/shared/public/commands/feed_commands.h"
 #import "ios/chrome/browser/shared/public/commands/find_in_page_commands.h"
+#import "ios/chrome/browser/shared/public/commands/glic_commands.h"
 #import "ios/chrome/browser/shared/public/commands/google_one_commands.h"
 #import "ios/chrome/browser/shared/public/commands/help_commands.h"
 #import "ios/chrome/browser/shared/public/commands/lens_overlay_commands.h"
@@ -359,6 +360,7 @@
     EditMenuBuilder,
     EnterprisePromptCoordinatorDelegate,
     FormInputAccessoryCoordinatorNavigator,
+    GlicCommands,
     GoogleOneCommands,
     MiniMapCommands,
     NetExportTabHelperDelegate,
@@ -1108,6 +1110,7 @@
     @protocol(FeedCommands),
     @protocol(PromosManagerCommands),
     @protocol(FindInPageCommands),
+    @protocol(GlicCommands),
     @protocol(ReaderModeCommands),
     @protocol(NewTabPageCommands),
     @protocol(NonModalSignInPromoCommands),
@@ -2850,6 +2853,16 @@
   _countryCodePickerCoordinator = nil;
 }
 
+#pragma mark - GlicCommands
+
+- (void)startGlicFlow {
+  _glicCoordinator =
+      [[GLICCoordinator alloc] initWithBaseViewController:self.viewController
+                                                  browser:self.browser];
+
+  [_glicCoordinator start];
+}
+
 #pragma mark - PromosManagerCommands
 
 - (void)showPromo {
diff --git a/ios/chrome/browser/content_suggestions/ui_bundled/content_suggestions_egtest.mm b/ios/chrome/browser/content_suggestions/ui_bundled/content_suggestions_egtest.mm
index 4c9e2fa..ef651d8 100644
--- a/ios/chrome/browser/content_suggestions/ui_bundled/content_suggestions_egtest.mm
+++ b/ios/chrome/browser/content_suggestions/ui_bundled/content_suggestions_egtest.mm
@@ -229,13 +229,7 @@
 
 // Tests the "Remove" action of the Most Visited context menu, and the "Undo"
 // action.
-// TODO(crbug.com/337064665): Test is flaky on simluator. Re-enable when fixed.
-#if TARGET_IPHONE_SIMULATOR
-#define MAYBE_testMostVisitedRemoveUndo FLAKY_testMostVisitedRemoveUndo
-#else
-#define MAYBE_testMostVisitedRemoveUndo testMostVisitedRemoveUndo
-#endif
-- (void)MAYBE_testMostVisitedRemoveUndo {
+- (void)testMostVisitedRemoveUndo {
   [self setupMostVisitedTileLongPress];
   const GURL pageURL = self.testServer->GetURL(kPageURL);
   NSString* pageTitle = base::SysUTF8ToNSString(kPageTitle);
diff --git a/ios/chrome/browser/content_suggestions/ui_bundled/ntp_home_egtest.mm b/ios/chrome/browser/content_suggestions/ui_bundled/ntp_home_egtest.mm
index 7e12ddc3..1a233e0f 100644
--- a/ios/chrome/browser/content_suggestions/ui_bundled/ntp_home_egtest.mm
+++ b/ios/chrome/browser/content_suggestions/ui_bundled/ntp_home_egtest.mm
@@ -312,8 +312,7 @@
 }
 
 // Tests that the collections shortcut are displayed and working.
-// TODO(crbug.com/387934031): Re-enable.
-- (void)DISABLED_testCollectionShortcutsWithWhatsNew {
+- (void)testCollectionShortcutsWithWhatsNew {
   AppLaunchConfiguration config = self.appConfigurationForTestCase;
   config.relaunch_policy = ForceRelaunchByCleanShutdown;
   // This ensures that the test will not fail when What's New has already been
diff --git a/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator.mm b/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator.mm
index 390905b3..b8d10ea8 100644
--- a/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator.mm
+++ b/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator.mm
@@ -94,12 +94,7 @@
       feature_engagement::TrackerFactory::GetForProfile(self.profile);
   self.viewController.actionHandler = self;
   self.viewController.presentationController.delegate = self;
-  if (trigger == CredentialProviderPromoTrigger::SetUpList) {
-    // If this is coming from the SetUpList, force to go directly to LearnMore.
-    self.promoContext = CredentialProviderPromoContext::kLearnMore;
-  } else {
-    self.promoContext = CredentialProviderPromoContext::kFirstStep;
-  }
+  self.promoContext = [self promoContextFromTrigger:trigger];
   [self.mediator configureConsumerWithTrigger:trigger
                                       context:self.promoContext];
   self.trigger = trigger;
@@ -144,7 +139,7 @@
     [self presentLearnMore];
     [self recordAction:IOSCredentialProviderPromoAction::kLearnMore];
   } else {
-    OpenIOSCredentialProviderSettings();
+    [self openIOSCredentialProviderSettings];
     [self recordAction:IOSCredentialProviderPromoAction::kGoToSettings];
     [self promoWasDismissed];
   }
@@ -244,4 +239,22 @@
   OpenIOSCredentialProviderSettings();
 }
 
+// Returns the promo context for the given trigger. For SetUpList the first
+// step is skipped because some context is already provided in the SetUpList
+// item's description. But on iOS 18, the first step allows the user to enable
+// the CPE directly in-app, so this is preferred.
+- (CredentialProviderPromoContext)promoContextFromTrigger:
+    (CredentialProviderPromoTrigger)trigger {
+  if (trigger == CredentialProviderPromoTrigger::SetUpList) {
+    if (@available(iOS 18.0, *)) {
+      if (IOSPasskeysM2Enabled() && IsIOSExpandedTipsEnabled()) {
+        // Go to the first step, which allows enabling CPE in-app.
+        return CredentialProviderPromoContext::kFirstStep;
+      }
+    }
+    return CredentialProviderPromoContext::kLearnMore;
+  }
+  return CredentialProviderPromoContext::kFirstStep;
+}
+
 @end
diff --git a/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator_unittest.mm b/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator_unittest.mm
index b691997..75213a0 100644
--- a/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator_unittest.mm
+++ b/ios/chrome/browser/credential_provider_promo/ui_bundled/credential_provider_promo_coordinator_unittest.mm
@@ -58,9 +58,9 @@
     coordinator_ = [[CredentialProviderPromoCoordinator alloc]
         initWithBaseViewController:nil
                            browser:browser_.get()];
-    FakeCredentialProviderPromoCoordinatorSettingsOpener* fakeDelegate =
+    settings_opener_delegate_ =
         [[FakeCredentialProviderPromoCoordinatorSettingsOpener alloc] init];
-    coordinator_.settingsOpenerDelegate = fakeDelegate;
+    coordinator_.settingsOpenerDelegate = settings_opener_delegate_;
     [coordinator_ start];
 
     credential_provider_promo_command_handler_ = HandlerForProtocol(
@@ -89,6 +89,8 @@
   CredentialProviderPromoCoordinator* coordinator_;
   id<CredentialProviderPromoCommands>
       credential_provider_promo_command_handler_;
+  FakeCredentialProviderPromoCoordinatorSettingsOpener*
+      settings_opener_delegate_;
 };
 
 #pragma mark - Tests
@@ -317,6 +319,8 @@
 // Tests the flow when the trigger is the SetUpList. It should go directly to
 // LearnMore and the primary CTA should go to settings.
 TEST_F(CredentialProviderPromoCoordinatorTest, SetUpListTrigger) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(kIOSExpandedTips);
   histogram_tester_->ExpectBucketCount(
       kIOSCredentialProviderPromoOnSetUpListHistogram,
       credential_provider_promo::IOSCredentialProviderPromoAction::kLearnMore,
@@ -344,6 +348,46 @@
       1);
 }
 
+// Tests the flow when the trigger is the SetUpList with the ExpandedTips
+// feature enabled. It should go to the first step and the primary CTA should
+// directly enable the CPE.
+TEST_F(CredentialProviderPromoCoordinatorTest,
+       SetUpListTriggerWithExpandedTips) {
+  if (!@available(iOS 18.0, *)) {
+    return;
+  }
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures({kIOSPasskeysM2, kIOSExpandedTips}, {});
+  histogram_tester_->ExpectBucketCount(
+      kIOSCredentialProviderPromoOnSetUpListHistogram,
+      credential_provider_promo::IOSCredentialProviderPromoAction::kLearnMore,
+      0);
+  // Trigger the promo with SetUpList. The primary CTA of the promo, when
+  // triggered from SetUpList, is 'Turn on AutoFill'.
+  [credential_provider_promo_command_handler_
+      showCredentialProviderPromoWithTrigger:CredentialProviderPromoTrigger::
+                                                 SetUpList];
+
+  // Perform the action. Coordinator will record the action 'Turn on AutoFill'.
+  ASSERT_TRUE([coordinator_
+      conformsToProtocol:@protocol(ConfirmationAlertActionHandler)]);
+  [(id<ConfirmationAlertActionHandler>)
+          coordinator_ confirmationAlertPrimaryAction];
+
+  // Wait for the histogram to be logged.
+  EXPECT_TRUE(base::test::ios::WaitUntilConditionOrTimeout(
+      TestTimeouts::action_timeout(), ^bool() {
+        return histogram_tester_->GetBucketCount(
+                   kTurnOnCredentialProviderExtensionPromptOutcomeHistogram,
+                   false) == 1;
+      }));
+
+  // Verify that only the expected metric was logged.
+  histogram_tester_->ExpectUniqueSample(
+      kTurnOnCredentialProviderExtensionPromptOutcomeHistogram, false, 1);
+}
+
 // Tests that the last action taken is recorded in local state.
 TEST_F(CredentialProviderPromoCoordinatorTest, LastActionTaken) {
   // Trigger the promo with SetUpList. The primary CTA of the promo, when
diff --git a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_coordinator.mm b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_coordinator.mm
index b08a65b..5525837 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_coordinator.mm
+++ b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_coordinator.mm
@@ -6,6 +6,9 @@
 
 #import "ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.h"
 #import "ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h"
+#import "ios/chrome/browser/shared/model/browser/browser.h"
+#import "ios/chrome/browser/shared/public/commands/command_dispatcher.h"
+#import "ios/chrome/browser/shared/public/commands/glic_commands.h"
 
 @implementation PageActionMenuCoordinator {
   PageActionMenuViewController* _viewController;
@@ -17,7 +20,9 @@
 - (void)start {
   _viewController = [[PageActionMenuViewController alloc] init];
   _mediator = [[PageActionMenuMediator alloc] init];
-  _viewController.mutator = _mediator;
+  id<GlicCommands> handler =
+      HandlerForProtocol(self.browser->GetCommandDispatcher(), GlicCommands);
+  _viewController.handler = handler;
 
   [self.baseViewController presentViewController:_viewController
                                         animated:YES
diff --git a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.h b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.h
index ee4706b..68676390 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.h
+++ b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.h
@@ -7,10 +7,8 @@
 
 #import <Foundation/Foundation.h>
 
-#import "ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_mutator.h"
-
 // The mediator for the page action menu.
-@interface PageActionMenuMediator : NSObject <PageActionMenuMutator>
+@interface PageActionMenuMediator : NSObject
 
 @end
 
diff --git a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
index 21a38d2a..1db61cc 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
+++ b/ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
@@ -6,18 +6,4 @@
 
 @implementation PageActionMenuMediator
 
-#pragma mark - PageActionMenuMutator
-
-- (void)openLensOverlay {
-  // TODO(crbug.com/414412781): Handle this.
-}
-
-- (void)startReaderMode {
-  // TODO(crbug.com/414412781): Handle this.
-}
-
-- (void)startGlicOverlay {
-  // TODO(crbug.com/414412781): Handle this.
-}
-
 @end
diff --git a/ios/chrome/browser/intelligence/page_action_menu/ui/BUILD.gn b/ios/chrome/browser/intelligence/page_action_menu/ui/BUILD.gn
index 9ec07f2..fd710df 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/ui/BUILD.gn
+++ b/ios/chrome/browser/intelligence/page_action_menu/ui/BUILD.gn
@@ -6,7 +6,6 @@
   sources = [
     "page_action_menu_entrypoint_view.h",
     "page_action_menu_entrypoint_view.mm",
-    "page_action_menu_mutator.h",
     "page_action_menu_view_controller.h",
     "page_action_menu_view_controller.mm",
   ]
@@ -15,6 +14,7 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/intelligence/page_action_menu/ui/resources",
     "//ios/chrome/browser/intelligence/page_action_menu/utils",
+    "//ios/chrome/browser/shared/public/commands",
     "//ios/chrome/browser/shared/ui/elements",
     "//ios/chrome/browser/shared/ui/symbols",
     "//ios/chrome/browser/shared/ui/util",
diff --git a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_mutator.h b/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_mutator.h
deleted file mode 100644
index 7719615..0000000
--- a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_mutator.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2025 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_INTELLIGENCE_PAGE_ACTION_MENU_UI_PAGE_ACTION_MENU_MUTATOR_H_
-#define IOS_CHROME_BROWSER_INTELLIGENCE_PAGE_ACTION_MENU_UI_PAGE_ACTION_MENU_MUTATOR_H_
-
-// The mutator protocol for the view controller to communicate with the
-// mediator.
-@protocol PageActionMenuMutator
-
-// Opens Lens overlay.
-- (void)openLensOverlay;
-
-// Starts reader mode.
-- (void)startReaderMode;
-
-// Starts GLIC overlay.
-- (void)startGlicOverlay;
-
-@end
-
-#endif  // IOS_CHROME_BROWSER_INTELLIGENCE_PAGE_ACTION_MENU_UI_PAGE_ACTION_MENU_MUTATOR_H_
diff --git a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h b/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h
index 46f2f864..fad1ab6 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h
+++ b/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h
@@ -7,13 +7,13 @@
 
 #import <UIKit/UIKit.h>
 
-@protocol PageActionMenuMutator;
+@protocol GlicCommands;
 
 // The view controller representing the presented page action menu UI.
 @interface PageActionMenuViewController : UIViewController
 
-// The mutator for communicating with the mediator.
-@property(nonatomic, weak) id<PageActionMenuMutator> mutator;
+// The handler for sending GLIC commands.
+@property(nonatomic, weak) id<GlicCommands> handler;
 
 @end
 
diff --git a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm b/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm
index c77efdc..bd1b955c 100644
--- a/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm
+++ b/ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm
@@ -5,8 +5,8 @@
 #import "ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.h"
 
 #import "build/branding_buildflags.h"
-#import "ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_mutator.h"
 #import "ios/chrome/browser/intelligence/page_action_menu/utils/ai_hub_constants.h"
+#import "ios/chrome/browser/shared/public/commands/glic_commands.h"
 #import "ios/chrome/browser/shared/ui/symbols/symbols.h"
 #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
@@ -219,6 +219,9 @@
   UIButton* button = [UIButton buttonWithConfiguration:buttonConfiguration
                                          primaryAction:nil];
   button.translatesAutoresizingMaskIntoConstraints = NO;
+  [button addTarget:self
+                action:@selector(handleGlicTapped:)
+      forControlEvents:UIControlEventTouchUpInside];
 
   return button;
 }
@@ -260,4 +263,15 @@
   return button;
 }
 
+#pragma mark - Private
+
+// Dismisses this view controller and starts the GLIC overlay.
+- (void)handleGlicTapped:(UIButton*)button {
+  PageActionMenuViewController* __weak weakSelf = self;
+  [self dismissViewControllerAnimated:YES
+                           completion:^{
+                             [weakSelf.handler startGlicFlow];
+                           }];
+}
+
 @end
diff --git a/ios/chrome/browser/omnibox/eg_tests/omnibox_popup_egtest.mm b/ios/chrome/browser/omnibox/eg_tests/omnibox_popup_egtest.mm
index d8a906b1..cc53389b 100644
--- a/ios/chrome/browser/omnibox/eg_tests/omnibox_popup_egtest.mm
+++ b/ios/chrome/browser/omnibox/eg_tests/omnibox_popup_egtest.mm
@@ -580,14 +580,23 @@
 
 @implementation HardwareKeyboardInteractionTestCase
 
+- (AppLaunchConfiguration)appConfigurationForTestCase {
+  AppLaunchConfiguration config = [super appConfigurationForTestCase];
+
+  // HW keyboard simulation does mess up the SW keyboard simulator state.
+  // Relaunching resets the state.
+  config.relaunch_policy = ForceRelaunchByCleanShutdown;
+
+  // Disable all autocomplete providers except the verbatim and history
+  // providers.
+  omnibox::DisableAutocompleteProviders(config, 133937171);
+
+  return config;
+}
+
 - (void)setUp {
   [super setUp];
 
-  // Start a server to be able to navigate to a web page.
-  self.testServer->RegisterRequestHandler(
-      base::BindRepeating(&omnibox::OmniboxHTTPResponses));
-  GREYAssertTrue(self.testServer->Start(), @"Test server failed to start.");
-
   if (![ChromeTestCase forceRestartAndWipe]) {
     [ChromeEarlGrey clearBrowsingHistory];
   }
@@ -599,10 +608,7 @@
 - (void)tearDownHelper {
   [OmniboxAppInterface tearDownFakeSuggestionsService];
   [super tearDownHelper];
-  // HW keyboard simulation does mess up the SW keyboard simulator state.
-  // Relaunching resets the state.
-  AppLaunchConfiguration config = [super appConfigurationForTestCase];
-  config.relaunch_policy = ForceRelaunchByCleanShutdown;
+  AppLaunchConfiguration config = [self appConfigurationForTestCase];
   [[AppLaunchManager sharedManager] ensureAppLaunchedWithConfiguration:config];
 }
 
@@ -642,8 +648,7 @@
 
 // Tests that leading image in omnibox changes based on the suggestion
 // highlighted.
-// TODO(crbug.com/40917341): Test is flaky on both device and simulator.
-- (void)DISABLED_testOmniboxLeadingImage {
+- (void)testOmniboxLeadingImage {
   // Start a server to be able to navigate to a web page.
   self.testServer->RegisterRequestHandler(
       base::BindRepeating(&StandardResponse));
@@ -668,14 +673,6 @@
   // is done.
   base::test::ios::SpinRunLoopWithMinDelay(base::Seconds(1));
   [ChromeEarlGrey simulatePhysicalKeyboardEvent:@"downArrow" flags:0];
-
-  // We expect to have the default leading image.
-  [ChromeEarlGrey
-      waitForUIElementToAppearWithMatcher:
-          grey_allOf(OmniboxWithLeadingImageElement(
-                         kOmniboxLeadingImageDefaultAccessibilityIdentifier),
-                     nil)];
-
   [ChromeEarlGrey simulatePhysicalKeyboardEvent:@"downArrow" flags:0];
 
   // The popup row is a url suggestion so we expect to have the leading
@@ -689,8 +686,12 @@
 }
 
 // Tests that user can use the hardware keyboard to select the "link you copied"
-// suggeston.
+// suggestion.
 - (void)testHardwareKeyboardSelectLinkYouCopied {
+  // Start a server to be able to navigate to a web page.
+  self.testServer->RegisterRequestHandler(
+      base::BindRepeating(&omnibox::OmniboxHTTPResponses));
+  GREYAssertTrue(self.testServer->Start(), @"Test server failed to start.");
   const GURL pageURL = self.testServer->GetURL(omnibox::PageURL(1));
   // Copy link in clipboard.
   [ChromeEarlGrey
diff --git a/ios/chrome/browser/overlays/ui_bundled/infobar_banner/sync_error/sync_error_infobar_banner_overlay_mediator.mm b/ios/chrome/browser/overlays/ui_bundled/infobar_banner/sync_error/sync_error_infobar_banner_overlay_mediator.mm
index ab7644e..0845d35 100644
--- a/ios/chrome/browser/overlays/ui_bundled/infobar_banner/sync_error/sync_error_infobar_banner_overlay_mediator.mm
+++ b/ios/chrome/browser/overlays/ui_bundled/infobar_banner/sync_error/sync_error_infobar_banner_overlay_mediator.mm
@@ -77,20 +77,12 @@
   [consumer setButtonText:base::SysUTF16ToNSString(delegate->GetButtonLabel(
                               SyncErrorInfoBarDelegate::BUTTON_OK))];
 
-  if (delegate->DisplayPasswordErrorIcon()) {
-    [consumer
-        setIconImage:DefaultSymbolTemplateWithPointSize(
-                         kSyncPasswordErrorSymbol, kInfobarSymbolPointSize)];
-    [consumer setIconBackgroundColor:[UIColor colorNamed:kRed100Color]];
-    [consumer setIconImageTintColor:[UIColor colorNamed:kRedColor]];
-  } else {
-    [consumer setIconImage:DefaultSymbolTemplateWithPointSize(
-                               kSyncErrorSymbol, kInfobarSymbolPointSize)];
-    [consumer setIconBackgroundColor:[UIColor colorNamed:kRed500Color]];
-    [consumer
-        setIconImageTintColor:[UIColor colorNamed:kPrimaryBackgroundColor]];
-  }
-
+  // TODO(crbug.com/408165259): Use a dedicated icon in case when
+  // `delegate->DisplayPasswordErrorIcon()` is true.
+  [consumer setIconImage:DefaultSymbolTemplateWithPointSize(
+                             kSyncErrorSymbol, kInfobarSymbolPointSize)];
+  [consumer setIconBackgroundColor:[UIColor colorNamed:kRed500Color]];
+  [consumer setIconImageTintColor:[UIColor colorNamed:kPrimaryBackgroundColor]];
   [consumer setUseIconBackgroundTint:YES];
 
   [consumer setPresentsModal:NO];
diff --git a/ios/chrome/browser/policy/model/BUILD.gn b/ios/chrome/browser/policy/model/BUILD.gn
index 113716c..8d0139a6 100644
--- a/ios/chrome/browser/policy/model/BUILD.gn
+++ b/ios/chrome/browser/policy/model/BUILD.gn
@@ -78,6 +78,7 @@
     "//components/history/core/common",
     "//components/lens:enterprise_policy",
     "//components/metrics",
+    "//components/omnibox/browser",
     "//components/optimization_guide/core:features",
     "//components/password_manager/core/common",
     "//components/policy:generated",
diff --git a/ios/chrome/browser/policy/model/configuration_policy_handler_list_factory.mm b/ios/chrome/browser/policy/model/configuration_policy_handler_list_factory.mm
index 26cd3f6..d8538ba 100644
--- a/ios/chrome/browser/policy/model/configuration_policy_handler_list_factory.mm
+++ b/ios/chrome/browser/policy/model/configuration_policy_handler_list_factory.mm
@@ -23,6 +23,7 @@
 #import "components/history/core/common/pref_names.h"
 #import "components/lens/lens_overlay_permission_utils.h"
 #import "components/metrics/metrics_pref_names.h"
+#import "components/omnibox/browser/omnibox_prefs.h"
 #import "components/optimization_guide/core/feature_registry/feature_registration.h"
 #import "components/password_manager/core/common/password_manager_pref_names.h"
 #import "components/policy/core/browser/boolean_disabling_policy_handler.h"
@@ -168,6 +169,9 @@
   { policy::key::kProvisionalNotificationsAllowed,
     prefs::kProvisionalNotificationsAllowedByPolicy,
     base::Value::Type::BOOLEAN },
+  { policy::key::kAIModeSearchSuggestSettings,
+    omnibox::kAIModeSearchSuggestSettings,
+    base::Value::Type::INTEGER },
 };
 // clang-format on
 
@@ -243,8 +247,11 @@
 
   std::vector<policy::GenAiDefaultSettingsPolicyHandler::GenAiPolicyDetails>
       gen_ai_default_policies;
-  // No GenAI policies are currently covered by GenAiDefaultSettings on iOS.
-  // When eligible policies are added, they will be handled here.
+  gen_ai_default_policies.emplace_back(
+      policy::key::kAIModeSearchSuggestSettings,
+      omnibox::kAIModeSearchSuggestSettings,
+      policy::GenAiDefaultSettingsPolicyHandler::PolicyValueToPrefMap(
+          {{0, 0}, {1, 0}, {2, 1}}));
   handlers->AddHandler(
       std::make_unique<policy::GenAiDefaultSettingsPolicyHandler>(
           std::move(gen_ai_default_policies)));
diff --git a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn
index 2f771c4..e533356 100644
--- a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn
+++ b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn
@@ -108,6 +108,7 @@
     "//ios/chrome/browser/authentication/ui_bundled/enterprise:enterprise_utils",
     "//ios/chrome/browser/authentication/ui_bundled/signin",
     "//ios/chrome/browser/authentication/ui_bundled/signin:features",
+    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
     "//ios/chrome/browser/authentication/ui_bundled/signin/promo",
     "//ios/chrome/browser/authentication/ui_bundled/signout_action_sheet",
     "//ios/chrome/browser/blocking_overlay/ui_bundled",
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
index e4ebf88..d6659288 100644
--- a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
+++ b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
@@ -67,6 +67,7 @@
 #import "ios/chrome/browser/authentication/ui_bundled/signin/promo/signin_fullscreen_promo_scene_agent.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_constants.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_coordinator.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin/signin_utils.h"
 #import "ios/chrome/browser/authentication/ui_bundled/signin_notification_infobar_delegate.h"
 #import "ios/chrome/browser/browser_view/ui_bundled/browser_view_controller.h"
@@ -622,6 +623,14 @@
                         profileInitStage:profileState.initStage];
 }
 
+- (void)signinDidEnd:(SceneState*)sceneState {
+  if (IsSigninForcedByPolicy()) {
+    // Handle intents after sign-in is done when the forced sign-in policy
+    // is enabled.
+    [self handleExternalIntents];
+  }
+}
+
 - (void)handleExternalIntents {
   if (![self canHandleIntents]) {
     return;
@@ -965,8 +974,11 @@
 // Stops the signin coordinator.
 // TODO(crbug.com/381444097): always use the animated.
 - (void)stopSigninCoordinatorAnimated:(BOOL)animated {
-  [self.signinCoordinator stopAnimated:animated];
+  // This ensure that when the SceneController receives the `signinFinished`
+  // command, it does not detect the SigninCoordinator as still presented.
+  SigninCoordinator* signinCoordinator = self.signinCoordinator;
   self.signinCoordinator = nil;
+  [signinCoordinator stopAnimated:animated];
 }
 
 // Creates, if needed, and presents saved passwords settings. Assumes all modal
@@ -1617,9 +1629,9 @@
   }
 
   if (IsSigninForcedByPolicy()) {
-    if (self.signinCoordinator) {
-      // Return NO because intents cannot be handled when using
-      // `self.signinCoordinator` for the forced sign-in prompt.
+    if (self.sceneState.signinInProgress) {
+      // Return NO because intents cannot be handled when a sign-in is in
+      // progress.
       return NO;
     }
     if (![self isSignedIn]) {
@@ -3882,16 +3894,12 @@
     self.signinCoordinator = nil;
     return;
   }
-  self.sceneState.signinInProgress = YES;
 
-  __block std::unique_ptr<ScopedUIBlocker> uiBlocker =
-      std::make_unique<ScopedUIBlocker>(self.sceneState);
   __weak __typeof(self) weakSelf = self;
   self.signinCoordinator.signinCompletion =
       ^(SigninCoordinatorResult result, id<SystemIdentity> identity) {
         [weakSelf signinCompletedWithResult:result
                                    identity:identity
-                                  uiBlocker:std::move(uiBlocker)
                                  completion:completion];
       };
 
@@ -3901,23 +3909,13 @@
 // Completion block for Signin coordinators.
 - (void)signinCompletedWithResult:(SigninCoordinatorResult)result
                          identity:(id<SystemIdentity>)identity
-                        uiBlocker:(std::unique_ptr<ScopedUIBlocker>)uiBlocker
                        completion:
                            (SigninCoordinatorCompletionCallback)completion {
   [self stopSigninCoordinatorAnimated:YES];
-  uiBlocker.reset();
 
   if (completion) {
     completion(result, identity);
   }
-
-  self.sceneState.signinInProgress = NO;
-
-  if (IsSigninForcedByPolicy()) {
-    // Handle intents after sign-in is done when the forced sign-in policy
-    // is enabled.
-    [self handleExternalIntents];
-  }
 }
 
 #pragma mark - WebStateListObserving
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_state.h b/ios/chrome/browser/shared/coordinator/scene/scene_state.h
index eab23243..d0976587 100644
--- a/ios/chrome/browser/shared/coordinator/scene/scene_state.h
+++ b/ios/chrome/browser/shared/coordinator/scene/scene_state.h
@@ -19,6 +19,7 @@
 @class ProfileState;
 @class SceneController;
 @class SceneState;
+class SigninInProgress;
 
 // During profile switching, it is possible that an animation is displayed
 // over the SceneState until the transition is complete. In that case the
@@ -118,7 +119,7 @@
 
 // YES if sign-in is in progress which covers the authentication flow and the
 // sign-in prompt UI.
-@property(nonatomic, assign) BOOL signinInProgress;
+@property(nonatomic, readonly) BOOL signinInProgress;
 
 // Accessibility identifier of the window.
 @property(nonatomic, copy, readonly) NSString* windowAccessibilityIdentifier;
@@ -160,6 +161,10 @@
 - (void)setWindowUserInterfaceStyle:
     (UIUserInterfaceStyle)windowUserInterfaceStyle;
 
+// Records that an extra sign-in process started. When the returned value is
+// destructed, the sign-in ended.
+- (std::unique_ptr<SigninInProgress>)createSigninInProgress;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_SHARED_COORDINATOR_SCENE_SCENE_STATE_H_
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_state.mm b/ios/chrome/browser/shared/coordinator/scene/scene_state.mm
index 5c9237f..9725cd8 100644
--- a/ios/chrome/browser/shared/coordinator/scene/scene_state.mm
+++ b/ios/chrome/browser/shared/coordinator/scene/scene_state.mm
@@ -13,6 +13,7 @@
 #import "ios/chrome/app/application_delegate/app_state.h"
 #import "ios/chrome/app/chrome_overlay_window.h"
 #import "ios/chrome/app/profile/profile_state.h"
+#import "ios/chrome/browser/authentication/ui_bundled/signin/signin_in_progress.h"
 #import "ios/chrome/browser/shared/coordinator/scene/scene_controller.h"
 #import "ios/chrome/browser/shared/coordinator/scene/scene_util.h"
 
@@ -46,7 +47,7 @@
 
 #pragma mark - SceneState
 
-@interface SceneState ()
+@interface SceneState () <SignInInProgressAudience>
 
 @end
 
@@ -68,6 +69,19 @@
 
   // The current value of -activationLevel.
   SceneActivationLevel _activationLevel;
+
+  // A UIBlocker that blocks other scenes if and only if a sign in is in
+  // progress.
+  std::unique_ptr<ScopedUIBlocker> _signinUIBlocker;
+
+  // The number of sign-in in progress. This include both the authentication
+  // flow and the sign-in prompt UI.
+  // In normal usage, this number can be greater than one because a signin
+  // coordinator may open another signin coordinator. It also occurs that two
+  // signin coordinator are started simultaneously from different screen, for
+  // example due to simultaneous tap on a IPH signin promo and on the NTP’s
+  // identity disc.
+  NSInteger _numberOfSigninInProgress;
 }
 
 - (instancetype)initWithAppState:(AppState*)appState {
@@ -124,6 +138,10 @@
   self.window.overrideUserInterfaceStyle = windowUserInterfaceStyle;
 }
 
+- (std::unique_ptr<SigninInProgress>)createSigninInProgress {
+  return std::make_unique<SigninInProgress>(self);
+}
+
 #pragma mark - Setters & Getters.
 
 - (UIWindow*)window {
@@ -258,15 +276,8 @@
   [_observers sceneState:self receivedUserActivity:pendingUserActivity];
 }
 
-- (void)setSigninInProgress:(BOOL)signinInProgress {
-  DCHECK(_signinInProgress != signinInProgress);
-
-  _signinInProgress = signinInProgress;
-  if (signinInProgress) {
-    [_observers signinDidStart:self];
-  } else {
-    [_observers signinDidEnd:self];
-  }
+- (BOOL)signinInProgress {
+  return _numberOfSigninInProgress > 0;
 }
 
 - (void)setProfileState:(ProfileState*)profileState {
@@ -400,4 +411,30 @@
   [userDefaults synchronize];
 }
 
+#pragma mark - SignInInProgressAudience
+
+- (void)signInStarted {
+  if (_numberOfSigninInProgress == 0) {
+    [_observers signinDidStart:self];
+    CHECK(!_signinUIBlocker, base::NotFatalUntil::M146);
+    _signinUIBlocker = std::make_unique<ScopedUIBlocker>(self);
+  } else {
+    CHECK(_signinUIBlocker, base::NotFatalUntil::M146);
+  }
+  _numberOfSigninInProgress++;
+}
+
+- (void)signinFinished {
+  _numberOfSigninInProgress--;
+  CHECK_GE(_numberOfSigninInProgress, 0, base::NotFatalUntil::M146);
+  if (_numberOfSigninInProgress < 0) {
+    _numberOfSigninInProgress = 0;
+  }
+  if (_numberOfSigninInProgress > 0) {
+    return;
+  }
+  _signinUIBlocker.reset();
+  [_observers signinDidEnd:self];
+}
+
 @end
diff --git a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
index 4f48008e..0c4ffdbf 100644
--- a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
+++ b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
@@ -41,6 +41,7 @@
 #import "components/network_time/network_time_tracker.h"
 #import "components/ntp_tiles/most_visited_sites.h"
 #import "components/ntp_tiles/popular_sites_impl.h"
+#import "components/omnibox/browser/omnibox_prefs.h"
 #import "components/omnibox/browser/zero_suggest_provider.h"
 #import "components/optimization_guide/core/model_execution/model_execution_prefs.h"
 #import "components/optimization_guide/core/optimization_guide_prefs.h"
@@ -1029,6 +1030,8 @@
   registry->RegisterTimePref(prefs::kIosSyncInfobarErrorLastDismissedTimestamp,
                              base::Time());
 
+  registry->RegisterIntegerPref(omnibox::kAIModeSearchSuggestSettings, 0);
+
   // Deprecated 09/2024 (migrated to localState prefs).
   registry->RegisterBooleanPref(prefs::kIncognitoInterstitialEnabled, false);
 
diff --git a/ios/chrome/browser/shared/public/commands/BUILD.gn b/ios/chrome/browser/shared/public/commands/BUILD.gn
index 79a4725e..7b520ce 100644
--- a/ios/chrome/browser/shared/public/commands/BUILD.gn
+++ b/ios/chrome/browser/shared/public/commands/BUILD.gn
@@ -31,6 +31,7 @@
     "find_in_page_commands.h",
     "generate_qr_code_command.h",
     "generate_qr_code_command.mm",
+    "glic_commands.h",
     "google_one_commands.h",
     "guided_tour_commands.h",
     "help_commands.h",
diff --git a/ios/chrome/browser/shared/public/commands/glic_commands.h b/ios/chrome/browser/shared/public/commands/glic_commands.h
new file mode 100644
index 0000000..35ff24e4
--- /dev/null
+++ b/ios/chrome/browser/shared/public/commands/glic_commands.h
@@ -0,0 +1,16 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_GLIC_COMMANDS_H_
+#define IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_GLIC_COMMANDS_H_
+
+// Commands relating to the Glic flow.
+@protocol GlicCommands
+
+// Starts the Glic flow.
+- (void)startGlicFlow;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_GLIC_COMMANDS_H_
diff --git a/ios/chrome/credential_provider_extension/credential_provider_view_controller.mm b/ios/chrome/credential_provider_extension/credential_provider_view_controller.mm
index 82bbb5c..64e81fd 100644
--- a/ios/chrome/credential_provider_extension/credential_provider_view_controller.mm
+++ b/ios/chrome/credential_provider_extension/credential_provider_view_controller.mm
@@ -71,6 +71,7 @@
   kPasswordSyncDisabled,
   kSignedOut,
   kUnsupportedAlgorithm,
+  kExcludedPasskey,
 };
 
 @interface CredentialProviderViewController () <
@@ -396,6 +397,15 @@
     case PasskeyCreationEligibility::kUnsupportedAlgorithm:
       [self exitWithErrorCode:ASExtensionErrorCodeFailed];
       return;
+    case PasskeyCreationEligibility::kExcludedPasskey:
+      // Note: ASExtensionErrorCodeMatchedExcludedCredential is iOS 18.0+ only,
+      // but so is the excludedCredentials array, so we can't reach this point
+      // if the iOS version is below 18.0, which is why there's no need for an
+      // else statement.
+      if (@available(iOS 18.0, *)) {
+        [self exitWithErrorCode:ASExtensionErrorCodeMatchedExcludedCredential];
+      }
+      return;
     case PasskeyCreationEligibility::kCanCreateWithUserInteraction:
       if ([self isUsingMultiProfile]) {
         [self showMultiProfilePasskeyCreationDialogWithDetails:
@@ -731,6 +741,11 @@
     return PasskeyCreationEligibility::kUnsupportedAlgorithm;
   }
 
+  if ([passkeyRequestDetails
+          hasExcludedPasskey:self.credentialStore.credentials]) {
+    return PasskeyCreationEligibility::kExcludedPasskey;
+  }
+
   if (passkeyRequestDetails.userVerificationRequired ||
       !IsAutomaticPasskeyUpgradeEnabled() || [self isUsingMultiProfile]) {
     return PasskeyCreationEligibility::kCanCreateWithUserInteraction;
diff --git a/ios/chrome/credential_provider_extension/passkey_request_details.h b/ios/chrome/credential_provider_extension/passkey_request_details.h
index a538b22b..835417f 100644
--- a/ios/chrome/credential_provider_extension/passkey_request_details.h
+++ b/ios/chrome/credential_provider_extension/passkey_request_details.h
@@ -41,6 +41,10 @@
 // domain and username as the passkey request.
 - (BOOL)hasMatchingPassword:(NSArray<id<Credential>>*)credentials;
 
+// Returns whether a passkey from the excluded passkeys list is both in the
+// credentials list and is for the same rpId as the current request.
+- (BOOL)hasExcludedPasskey:(NSArray<id<Credential>>*)credentials;
+
 // A preference for whether the authenticator should attempt to verify that it
 // is being used by its owner.
 @property(nonatomic, readonly) BOOL userVerificationRequired;
diff --git a/ios/chrome/credential_provider_extension/passkey_request_details.mm b/ios/chrome/credential_provider_extension/passkey_request_details.mm
index 2ca57ee1..cbe24b9 100644
--- a/ios/chrome/credential_provider_extension/passkey_request_details.mm
+++ b/ios/chrome/credential_provider_extension/passkey_request_details.mm
@@ -28,6 +28,10 @@
 // credentials are allowed.
 @property(strong, nonatomic, readwrite) NSArray<NSData*>* allowedCredentials;
 
+// A list of excluded credentials for this request. An empty list means no
+// credentials are excluded.
+@property(strong, nonatomic, readwrite) NSArray<NSData*>* excludedCredentials;
+
 // Whether at least one signing algorithm is supported by the relying party.
 // Unused by assertion requests.
 @property(nonatomic, readwrite) BOOL algorithmIsSupported;
@@ -60,6 +64,7 @@
         passkeyCredentialRequestParameters.relyingPartyIdentifier;
     self.allowedCredentials =
         passkeyCredentialRequestParameters.allowedCredentials;
+    self.excludedCredentials = nil;
     self.algorithmIsSupported = NO;
     self.userName = nil;
     self.userHandle = nil;
@@ -107,8 +112,18 @@
     self.userName = identity.userName;
     self.userHandle = identity.userHandle;
     self.allowedCredentials = nil;
+    self.excludedCredentials = nil;
 
     if (@available(iOS 18.0, *)) {
+      if (passkeyCredentialRequest.excludedCredentials.count) {
+        NSMutableArray<NSData*>* excludedCredentials = [NSMutableArray array];
+        for (ASAuthorizationPlatformPublicKeyCredentialDescriptor* credential in
+                 passkeyCredentialRequest.excludedCredentials) {
+          [excludedCredentials addObject:credential.credentialID];
+        }
+        self.excludedCredentials = [excludedCredentials copy];
+      }
+
       if (IsPasskeyPRFEnabled()) {
         _prf = [PRFData fromRequest:passkeyCredentialRequest];
       }
@@ -195,6 +210,21 @@
   return credentialIndex != NSNotFound;
 }
 
+- (BOOL)hasExcludedPasskey:(NSArray<id<Credential>>*)credentials {
+  if (!self.excludedCredentials.count) {
+    return NO;
+  }
+
+  NSUInteger credentialIndex = [credentials indexOfObjectPassingTest:^BOOL(
+                                                id<Credential> credential,
+                                                NSUInteger idx, BOOL* stop) {
+    return credential.isPasskey &&
+           [credential.rpId isEqualToString:self.relyingPartyIdentifier] &&
+           [self.excludedCredentials containsObject:credential.credentialId];
+  }];
+  return credentialIndex != NSNotFound;
+}
+
 #pragma mark - PasskeyRequestDetails (Testing)
 
 - (instancetype)initWithURL:(NSString*)url username:(NSString*)username {
diff --git a/ios/chrome/test/data/policy/policy_test_bundle_data.filelist b/ios/chrome/test/data/policy/policy_test_bundle_data.filelist
index f7d7d302..86bc0ad3 100644
--- a/ios/chrome/test/data/policy/policy_test_bundle_data.filelist
+++ b/ios/chrome/test/data/policy/policy_test_bundle_data.filelist
@@ -4,6 +4,7 @@
 # NOTE: this file is generated by build/ios/update_bundle_filelist.py
 #       If it requires updating, you should get a presubmit error with
 #       instructions on how to regenerate. Otherwise, do not edit.
+//ios/chrome/test/data/policy/pref_mapping/AIModeSearchSuggestSettings.json
 //ios/chrome/test/data/policy/pref_mapping/AllowChromeDataInBackups.json
 //ios/chrome/test/data/policy/pref_mapping/AppStoreRatingEnabled.json
 //ios/chrome/test/data/policy/pref_mapping/AutofillAddressEnabled.json
diff --git a/ios/chrome/test/data/policy/pref_mapping/AIModeSearchSuggestSettings.json b/ios/chrome/test/data/policy/pref_mapping/AIModeSearchSuggestSettings.json
new file mode 100644
index 0000000..19977f4c
--- /dev/null
+++ b/ios/chrome/test/data/policy/pref_mapping/AIModeSearchSuggestSettings.json
@@ -0,0 +1,15 @@
+[
+  {
+    "os": [
+      "ios"
+    ],
+    "simple_policy_pref_mapping_test": {
+      "pref_name": "omnibox.ai_mode_search_suggest_settings",
+      "default_value": 0,
+      "values_to_test": [
+        0,
+        1
+      ]
+    }
+  }
+]
diff --git a/ios/chrome/test/data/policy/pref_mapping/GenAiDefaultSettings.json b/ios/chrome/test/data/policy/pref_mapping/GenAiDefaultSettings.json
index eafe53d..b7117ae 100644
--- a/ios/chrome/test/data/policy/pref_mapping/GenAiDefaultSettings.json
+++ b/ios/chrome/test/data/policy/pref_mapping/GenAiDefaultSettings.json
@@ -3,6 +3,45 @@
     "os": [
       "ios"
     ],
-    "reason_for_missing_test": "No covered GenAI policies are currently supported on iOS."
+    "policy_pref_mapping_tests": [
+      {
+        "policies": {
+          "GenAiDefaultSettings": 0
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          }
+        }
+      },
+      {
+        "policies": {
+          "GenAiDefaultSettings": 1
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 0
+          }
+        }
+      },
+      {
+        "policies": {
+          "GenAiDefaultSettings": 2
+        },
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "value": 1
+          }
+        }
+      },
+      {
+        "policies": {},
+        "prefs": {
+          "omnibox.ai_mode_search_suggest_settings": {
+            "default_value": 0
+          }
+        }
+      }
+    ]
   }
 ]
diff --git a/ios/chrome/test/variations_smoke_test/variations_smoke_egtest.mm b/ios/chrome/test/variations_smoke_test/variations_smoke_egtest.mm
index b9f991f5..e4e44d4 100644
--- a/ios/chrome/test/variations_smoke_test/variations_smoke_egtest.mm
+++ b/ios/chrome/test/variations_smoke_test/variations_smoke_egtest.mm
@@ -36,7 +36,7 @@
       conditionWithName:@"Waiting for variations seed fetch."
                   block:^BOOL {
                     BOOL variationsSeedExists = [VariationsSmokeTestAppInterface
-                        variationsSeedInLocalStatePrefs];
+                        isVariationsSeedStored];
                     BOOL expectedLastFetchTimeCondition =
                         !verifyFetchedInCurrentLaunch ||
                         [VariationsSmokeTestAppInterface
diff --git a/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.h b/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.h
index a089628..55ed3ae 100644
--- a/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.h
+++ b/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.h
@@ -10,9 +10,8 @@
 // The app interface for variations smoke test.
 @interface VariationsSmokeTestAppInterface : NSObject
 
-// Non-empty variations seed signature & compressed seed appears in Local State
-// prefs.
-+ (BOOL)variationsSeedInLocalStatePrefs;
+// Non-empty variations seed signature & compressed seed are stored.
++ (BOOL)isVariationsSeedStored;
 
 // Returns true when variations seed last fetch time appears in Local State
 // prefs and the fetch time is after current app process start time.
diff --git a/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.mm b/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.mm
index e250b57..7ff7ec2 100644
--- a/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.mm
+++ b/ios/chrome/test/variations_smoke_test/variations_smoke_test_app_interface.mm
@@ -31,7 +31,7 @@
 
 @implementation VariationsSmokeTestAppInterface
 
-+ (BOOL)variationsSeedInLocalStatePrefs {
++ (BOOL)isVariationsSeedStored {
   variations::SeedReaderWriter* seedReaderWriter =
       GetApplicationContext()
           ->GetVariationsService()
diff --git a/ios_internal b/ios_internal
index 91cadb7..6d08270 160000
--- a/ios_internal
+++ b/ios_internal
@@ -1 +1 @@
-Subproject commit 91cadb79a847230f66a14711e00f670580629fbc
+Subproject commit 6d082702c7c77c8dc97cdf1a572a852b53e569df
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc
index 8d3550c..aba5c90e 100644
--- a/media/renderers/video_resource_updater.cc
+++ b/media/renderers/video_resource_updater.cc
@@ -807,13 +807,20 @@
     return external_resource;
   }
 
-  auto transfer_resource = viz::TransferableResource::MakeGpu(
-      shared_image->mailbox(), shared_image->GetTextureTarget(),
-      video_frame->acquire_sync_token(), video_frame->coded_size(),
-      shared_image->format(), video_frame->metadata().allow_overlay,
-      viz::TransferableResource::ResourceSource::kVideo);
-  transfer_resource.origin = shared_image->surface_origin();
-  transfer_resource.color_space = video_frame->ColorSpace();
+  SkAlphaType alpha_type =
+      (external_resource.type == VideoFrameResourceType::RGBA_PREMULTIPLIED)
+          ? kPremul_SkAlphaType
+          : kUnpremul_SkAlphaType;
+
+  viz::TransferableResource::MetadataOverride overrides = {
+      .size = video_frame->coded_size(),
+      .is_overlay_candidate = video_frame->metadata().allow_overlay,
+      .color_space = video_frame->ColorSpace(),
+      .alpha_type = alpha_type,
+  };
+  auto transfer_resource = viz::TransferableResource::Make(
+      shared_image, viz::TransferableResource::ResourceSource::kVideo,
+      video_frame->acquire_sync_token(), overrides);
   transfer_resource.hdr_metadata =
       video_frame->hdr_metadata().value_or(gfx::HDRMetadata());
   transfer_resource.needs_detiling = video_frame->metadata().needs_detiling;
@@ -822,10 +829,6 @@
         viz::TransferableResource::SynchronizationType::kGpuCommandsCompleted;
   }
   transfer_resource.ycbcr_info = video_frame->ycbcr_info();
-  transfer_resource.alpha_type =
-      (external_resource.type == VideoFrameResourceType::RGBA_PREMULTIPLIED)
-          ? kPremul_SkAlphaType
-          : kUnpremul_SkAlphaType;
 
 #if BUILDFLAG(IS_ANDROID)
   transfer_resource.is_backed_by_surface_view =
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index f8c7777..5279a08 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -1231,7 +1231,6 @@
     { "name": "sslmate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "steventress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "temehu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tobias-kluge.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vortexhobbies.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "willnorris.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aiticon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -1263,7 +1262,6 @@
     { "name": "mqas.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "debtkit.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "decibelios.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "diamante.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "domaris.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "enorekcah.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fedorapeople.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -1580,7 +1578,6 @@
     { "name": "gavick.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "herocentral.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hicoria.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "id-conf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ikkatsu-satei.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jira.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kirei.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3112,7 +3109,6 @@
     { "name": "plirt.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qgustavor.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rentinsingapore.com.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rideworks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "riesenweber.id.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robi-net.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rootservice.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3411,7 +3407,6 @@
     { "name": "clickandgo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "colognegaming.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "compucorner.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "concentrade.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crepererum.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptoparty.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "devdoodle.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3728,7 +3723,6 @@
     { "name": "crow.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptopartyutah.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptoseb.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ctoforhire.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daemon.xin", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daniel-steuer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dario.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3944,7 +3938,6 @@
     { "name": "vincentcox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "walkeryoung.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wartorngalaxy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wealthprojector.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wealthprojector.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "weathermyway.rocks", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "web4all.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -4013,7 +4006,6 @@
     { "name": "felisslovakia.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ff-bad-hoehenstadt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fhcdn.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "filoo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "flat.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "florian-schlachter.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fortress.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -4308,7 +4300,6 @@
     { "name": "meizufans.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michaelcullen.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michaelleibundgut.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "michal-kral.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "microme.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mizd.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "monnyonle.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -4464,7 +4455,6 @@
     { "name": "youyoulemon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yuyu.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yvesx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zhanghao.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zorz.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0au.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "692b8c32.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6035,7 +6025,6 @@
     { "name": "protonmail.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "protonmail.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "psxtr.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pucssa.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pygarage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qtpower.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qualityology.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6095,7 +6084,6 @@
     { "name": "smartofficesandsmarthomes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smet.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smirkingwhorefromhighgarden.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "smoothics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "socialgrowing.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "socialhams.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "soldecom.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6272,7 +6260,6 @@
     { "name": "guevener.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haku.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hashru.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "healthfoam.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "herrsmith.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "highvelocitydesign.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hikariempire.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6519,7 +6506,6 @@
     { "name": "bip.gov.sa", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bismarck.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitshaker.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bittersweetcandybowl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blinkenlight.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bluechilli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bookmein.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7387,7 +7373,6 @@
     { "name": "twd2.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tysye.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "umisonoda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "uptimed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urbanesecurity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urspringer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "usleep.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7628,7 +7613,6 @@
     { "name": "vgerak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vereinscheck.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vgropp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "veronique-schmitz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tokyo-powerstation.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vitalismaatjes.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "volker-gropp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7918,7 +7902,6 @@
     { "name": "bluefuzz.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brashear.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brinkhu.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brokenhands.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "btcarmory.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bucket.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8103,7 +8086,6 @@
     { "name": "laextra.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lattyware.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lattyware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lavita.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lawrencemurgatroyd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lebanesearmy.gov.lb", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leertipp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8397,7 +8379,6 @@
     { "name": "bewerbungsfibel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bemsoft.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beyondalderaan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bilke.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biboumail.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beijinglug.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blichmann.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8525,7 +8506,6 @@
     { "name": "fixforce.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ff-obersunzing-niedersunzing.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gearset.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "futureyouhealth.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fehngarten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getmdl.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fleisch.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8610,7 +8590,6 @@
     { "name": "leseditionsbraquage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "livi.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "listahu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "komischkeszeug.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "klebetape.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lirion.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leanplando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8685,7 +8664,6 @@
     { "name": "nerdpol.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ni-mate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nhome.ba", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nerds-gegen-stephan.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oddnumber.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nickstories.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "notnize.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8781,7 +8759,6 @@
     { "name": "seitenwaelzer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "semox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skyline.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "russia.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sking.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sexy-store.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "senzaparole.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8796,7 +8773,6 @@
     { "name": "sitc.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "startpage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sm.ms", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "smart-mirror.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stammtisch.domains", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "storyland.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sobieray.dyndns.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8981,7 +8957,6 @@
     { "name": "davidpearce.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cybersins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defuse.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dalek.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datenschutz-individuell.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "develux.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defiler.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -9822,7 +9797,6 @@
     { "name": "sikevux.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sh-heppelmann.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seogeek.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sitecuatui.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sozon.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sostacancun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "southernmost.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -9852,7 +9826,6 @@
     { "name": "texby.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stephan-matthiesen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thedronechart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stellmacher.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swiftqueue.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tequilazor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swisslinux.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10037,10 +10010,8 @@
     { "name": "capitolpathways.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bonnsustainabilityportal.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bizedge.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brecht.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buricloud.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cadooz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "capitalp.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cbdev.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "caroli.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "britishbookmakers.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10185,12 +10156,10 @@
     { "name": "forestraven.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geekpad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fwest.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "funatic.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "funken-networks.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geiser-family.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gittr.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "glazedmag.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fundort.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "girvas.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "glueckskindter.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gensonline.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10561,7 +10530,6 @@
     { "name": "stopthethyroidmadness.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stkeverneparishcouncil.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teaser-trailer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "susanna-komischke.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tangel.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tecnimotos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tecnoarea.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10600,7 +10568,6 @@
     { "name": "ueberwachungspaket.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "turkish.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urlscan.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ukozliku.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urban-culture.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "utw.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tkonstantopoulos.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10721,7 +10688,6 @@
     { "name": "earlyyearshub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ensage.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "escael.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "eurocomcompany.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ezgif.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faldoria.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantasyspectrum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12174,7 +12140,6 @@
     { "name": "bc-diffusion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bfam.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beulen.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "andreamcnett.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bearded.sexy", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedandbreakfast.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedandbreakfasteuropa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12475,7 +12440,6 @@
     { "name": "hatarisecurity.co.ke", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "houraiteahouse.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "happyagain.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hygo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibin.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huahinpropertylisting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "humpen.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -13415,7 +13379,6 @@
     { "name": "numwave.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neurocny.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ojdip.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "orleika.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "owl.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nephelion.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "papadopoulos.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14389,7 +14352,6 @@
     { "name": "uuit.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "v-d-p.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "v2bv.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "valika.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "venturum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "venturum.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "venturum.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15367,7 +15329,6 @@
     { "name": "wootware.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "5chat.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aaltocapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aioboot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ait.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alice.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpinestarmassage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -16361,7 +16322,6 @@
     { "name": "tokky.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tomaspatera.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toothdoc.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "topicdesk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torngalaxy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torte.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "touchweb.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -16553,7 +16513,6 @@
     { "name": "meh.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "meklon.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "membershipservices.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mercury.photo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "miegl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "milania.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mitchelmore.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -16704,7 +16663,6 @@
     { "name": "acsbbs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "affissioni.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aireaseleaks.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "akj.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexanderneng.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andycraftz.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anleitung-deutsch-lernen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17244,7 +17202,6 @@
     { "name": "516422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "519422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "524022.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "524922.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "534622.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "541722.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "592422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17283,7 +17240,6 @@
     { "name": "645322.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "646322.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "649822.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "651422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "652422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "659422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "673422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17359,7 +17315,6 @@
     { "name": "falegname-roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fassaden-selleng.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastcash.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "filtr.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fishgen.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francetraceur.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freesoftlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17408,7 +17363,6 @@
     { "name": "stuartmorris.tel", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taddiestales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcspartner.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teesypeesy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thebannerstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tir-mauperthuis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torontostarts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17602,7 +17556,6 @@
     { "name": "thecompany.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thewagesroom.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thor.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "threema.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "time.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transporta.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "traslochi-trasporti-facchinaggio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17639,7 +17592,6 @@
     { "name": "alp.od.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "altes-sportamt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "altoa.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "anime-rg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "antani.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "antennisti.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atherosense.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -17792,7 +17744,6 @@
     { "name": "rollatorweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "romanmichel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "root-space.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rudewiki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rummage4property.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "salrosadohimalaia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scaffalature.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18087,7 +18038,6 @@
     { "name": "envoyez.moi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "escuelabiblica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eutotal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "evoco.vc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fackovcova.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fackovcova.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fackovcova.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18227,7 +18177,6 @@
     { "name": "symlnk.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "talking12.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tekniskakustik.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "terabyteit.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teusink.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thebakery2go.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tildes.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18446,7 +18395,6 @@
     { "name": "reticon.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "retmig.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rolleyes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rotkreuzshop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "run-it-direct.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rvender.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sadbox.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18626,7 +18574,6 @@
     { "name": "fosaudit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frprn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g8energysolutions.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gepps.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ghini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giardiniere.bologna.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giardiniere.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18904,7 +18851,6 @@
     { "name": "dyscalculia-blog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricagoura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricagourahills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "electricalmoorpark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricalnewburypark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricaloakpark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricalsimivalley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -18918,7 +18864,6 @@
     { "name": "electricianagoura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricianagourahills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electriciancalabasas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "electriciancamarillo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricianconejovalley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electriciandosvientos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electricianhiddenhills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -19269,7 +19214,6 @@
     { "name": "nginxconfig.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nickplotnek.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ninth.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nshipster.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nshipster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "numerologist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openstreetmap.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -19585,7 +19529,6 @@
     { "name": "whatisthe.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whittome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "withextraveg.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wohlpa.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wrn.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xants.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--5dbkjqb0d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -19638,7 +19581,6 @@
     { "name": "jordhy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "josephbleroy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "k7azx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kissmycreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kzar.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lai.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lovelychalets-peisey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -20609,7 +20551,6 @@
     { "name": "dulcinela.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "duncm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eelcapone.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eirb.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eldevo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elizabethrominski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enalean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -20681,7 +20622,6 @@
     { "name": "marjeta-gurtner.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "markandrosalind.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "martin-loewer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mediabackoffice.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mediarithmics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mhadot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -21109,7 +21049,6 @@
     { "name": "torontoaccesscontrol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "truyenfull.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuev-hessen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ubcani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ubuntu18.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "varyrentacar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verwandlung.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -21200,7 +21139,6 @@
     { "name": "fs-g.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g-ds.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gaengler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gameanalytics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "happybirthdaywisher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hiparish.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "holycrossphl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -21553,7 +21491,6 @@
     { "name": "divinemercyparishvlds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmparish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "domakidis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "domenicam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dras.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drawtwo.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drcarolynquist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -22313,7 +22250,6 @@
     { "name": "3dgep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afterdwi.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amazingraymond.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "antroposboutique.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "australianairbrushedtattoos.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "australiantemporarytattoos.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avaeon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -22448,8 +22384,6 @@
     { "name": "adativos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "administrator.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adnolesh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "adresults.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "adresults.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alphanodes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alternative.hosting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alternativetomeds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -22641,7 +22575,6 @@
     { "name": "pellet.pordenone.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "perfmatters.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pets4life.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "philipkobelt.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "php.watch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phyley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pinot.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23260,7 +23193,6 @@
     { "name": "wasabiwallet.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webia.in.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webmediaprint.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wojak.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zundapp.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "24.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7plus.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23390,7 +23322,6 @@
     { "name": "windictus.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xssi.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zumub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "081115.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "0x41.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1android.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "4hmediaproductions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23659,11 +23590,6 @@
     { "name": "intercom.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "100k.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "502312.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "621162.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "676812.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "721172.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "797715.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "877791.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "accreditamento.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alabordage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alfredapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23695,7 +23621,6 @@
     { "name": "eenvren.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eenvxing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ehcommerce.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "empregosrj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enbulleiugnen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "energygenie.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "engrish.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23853,7 +23778,6 @@
     { "name": "iszy.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "it-inside.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kapsalonlinds.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kidsdinefree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiot.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kita-sun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klempin.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -23934,7 +23858,6 @@
     { "name": "usamdt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uvx.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "veply.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "villagecardshop.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ville-aime.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wangqr.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wardslager.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -24428,7 +24351,6 @@
     { "name": "ashleykaryl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autonoleggio.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awsumchan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beansgalore.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bellezzasenzalimiti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bestfotostudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "billograminternal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -24581,8 +24503,6 @@
     { "name": "autocartruck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "az.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aznaetelivy.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "batteryboys.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "batteryboys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beboldpr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "berlin-cuisine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "betor.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -24620,7 +24540,6 @@
     { "name": "cakeoffencesact.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catlovingcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ce-webdesign.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "chicback.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chirurgoplastico.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cinenote.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "civics.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -24698,7 +24617,6 @@
     { "name": "infrabind.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infrabond.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infraplot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "insomniasec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intrepy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "isaaccomputerscience.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "isovideo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -25738,7 +25656,6 @@
     { "name": "optiker-gilde.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "partyausstatter24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pawgearlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "paymongo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pensionecani.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "perfect-privacy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phpmynewsletter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -26033,7 +25950,6 @@
     { "name": "everglow.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fernland.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fundkyapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gaganenterprises.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guzdek.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hannes.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellosalmon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -28167,7 +28083,6 @@
     { "name": "bridgedigest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brigittefontaine.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bssolvfagen-pre-storeswa-wap.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "btc-alpha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btc-doge.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "businesspartner.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "busphotos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29250,7 +29165,6 @@
     { "name": "estahl.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evntage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "extinctionrebellion.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "flokkr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "focanocliente.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freewerkt.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gerinet.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29259,7 +29173,6 @@
     { "name": "gregmarziomedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gse.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gt-himmel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "impresadipulizieantonella.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "indexcesmad.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iplist.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ivocopro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29294,7 +29207,6 @@
     { "name": "revisores.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "risounokareshi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanierungskonzept.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "searx.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartpheromones.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "songdew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "srilankan-hope-for-children.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29357,7 +29269,6 @@
     { "name": "eznetworks.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gooty.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hackerone.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "haderecker.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homeandliving.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homs.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "houstonlockout.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29603,7 +29514,6 @@
     { "name": "hosoi-tax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "idesoft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "idesoft.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "idkidknow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ipsum.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "irioka.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "itzer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -29916,7 +29826,6 @@
     { "name": "aanwp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpharoofga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amdm.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "andersonpowerservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "antizon.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anyi.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anyilin.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -30190,7 +30099,6 @@
     { "name": "biblionix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biol.moscow", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brunchandmatch.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bs-herting.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buffup.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buyessayscheap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cacrm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -30999,7 +30907,6 @@
     { "name": "post.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "probazen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pylon.bot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qp666d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quiqd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quiqurls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radiodeutsch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -31563,11 +31470,9 @@
     { "name": "choservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "citylift.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cityradiusmaps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "claudia-makeup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clearbooks.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clearlinux.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cleveroad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "combineconquer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "compdermcenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "comunal.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "confusion-band.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -32219,8 +32124,6 @@
     { "name": "pilatespt.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pistonpowered.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pixiin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pmccrystal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pmcorganometallix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pmcouvrie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pmcvinyladditives.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "printmet.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -33416,7 +33319,6 @@
     { "name": "afc-capital.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aflattr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agencybeam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agripartner.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alfiebarker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allgemeinarzt-wenta-bralla.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alluremedicalaesthetic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -33859,7 +33761,6 @@
     { "name": "show-pro.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "showmeengland.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shrsl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sigparser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "silentinstaller.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "simi-reizen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -33991,7 +33892,6 @@
     { "name": "antopie.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "araqnid.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arest.web.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "arganwinkel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "associazionerimborsi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atkinshealthcenter.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atmox.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34248,7 +34148,6 @@
     { "name": "prodottitipicidellatoscana.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "progtime.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "q1z.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qualityfactory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "queensbotanical.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quest3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qvq.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -34414,7 +34313,6 @@
     { "name": "cheapmarina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chsamuel.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codefaq.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "confirmit.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "countrymountaininn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coworkanywhere.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "criptofy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44312,7 +44210,6 @@
     { "name": "studujdigital.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "summer.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "supercours.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "systemd.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taildb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telesonicengineering.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "terraco.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44553,7 +44450,6 @@
     { "name": "aoicollege.edu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arcosdequejana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asperatechnology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "asperatechnology.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asperatechnology.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bekabazar.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "berksestateplanning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44844,7 +44740,6 @@
     { "name": "financethrive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "financetwenty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "financewhile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "finax.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flp-pushkar.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fontnegar.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forfortcollins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44943,7 +44838,6 @@
     { "name": "steiner.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sticky.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strangeelectricdreams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stratussc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "swap.ly", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sysadvisors.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telosglobal.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44962,7 +44856,6 @@
     { "name": "voxengo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waf.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "warszawa-pranie-dywanow.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wheyteck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wineforhelp.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "woodfarm2020.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xtremotivation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45422,7 +45315,6 @@
     { "name": "bss.net.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bss.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buurtkeukens.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "buyer.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buzzkuri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bv-driver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "byll.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46152,7 +46044,6 @@
     { "name": "ndaal.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "notrero13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "npc-ts.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oofishing.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opcod3.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ortanatech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pamiers-citoyenne.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46220,7 +46111,6 @@
     { "name": "tfsound.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thecolourcloset.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thefarleys.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tisec.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "triedandtruebytrista.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trussgenius.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tryin.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46318,7 +46208,6 @@
     { "name": "currentcryptocurrency.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "currentcryptocurrencynews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dangeredwolf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "danielaeichberger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deemasfashion.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deemasfashion.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deemasfashion.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46787,12 +46676,10 @@
     { "name": "bitcoinprice.international", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitcoinprice.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitcoinprice.pizza", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bitcoinprice.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitcoinprice.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitcoinslots.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blackforlife.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boringnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bracebridgechiro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bredabeds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bubu1.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "camerashot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46900,7 +46787,6 @@
     { "name": "milkaholic.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mobilhaber.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "modanese.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mof.gov.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "molenaar-ricardo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moneyformybeer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moremindsbetter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47079,7 +46965,6 @@
     { "name": "crimean-wines.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crochetkim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d-tousei.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dalliard.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dangerscience.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davmimer-mercerie.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "decorpol-renovation.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47148,7 +47033,6 @@
     { "name": "hkl-gruppe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoistsdirect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hrlive.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "infomate360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infradot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infrapixel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infrarate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47424,7 +47308,6 @@
     { "name": "hostingtg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "howtodesignwebsite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igranit.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ihorvorotnov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilasoft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imperialfenceinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "integration-mouvements-oculaires.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48810,7 +48693,6 @@
     { "name": "marc.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketingmind.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketplace.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "matejkosiarcik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "materi.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medaboutme.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mediabola.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49025,7 +48907,6 @@
     { "name": "z.cash", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zagorod.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zeliard.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zimperium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zotan.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zubby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutyou.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49462,7 +49343,6 @@
     { "name": "etoile-rc.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "excelbroadcast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fattoriabio.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fitchdesigncompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francoislaude.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frenchbluecottage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frosty.style", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49818,7 +49698,6 @@
     { "name": "crypt-app.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daoudi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "data-reader.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dcnews.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deenergiecentrale.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deenergiecentrale.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "degentseflikkenzoekenu.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50022,7 +49901,6 @@
     { "name": "anasaci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anja-vastgoed.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anneeden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "apartamentscalpatoi.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apex-parts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apfnxg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arabi-online.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50577,7 +50455,6 @@
     { "name": "pamperssamples.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paramo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parelweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "parentsguidetotheworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parenttheirpassion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peace-is-possible.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peppyflora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50618,7 +50495,6 @@
     { "name": "salo.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schweiz-sextreffen.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scorpioncomputers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "scoutbee.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scpsecretlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scpsecretlaboratory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scriptolab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51230,7 +51106,6 @@
     { "name": "u2b.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ukrainskie-konstrukcii.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "upwardcreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "urbanbageecha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uscveteranspark.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "valerieorsoni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vault.spdns.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51305,7 +51180,6 @@
     { "name": "churchplaza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "citycardgand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clearcreekcountydronepilot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cloudfree.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codecrew.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "colorpalette.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "comfy.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51487,7 +51361,6 @@
     { "name": "profil-doors.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projektentwicklung-westfalen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "propertiesmiami.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ps.energy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puredisinfection.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quarrymill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "questforgaming.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51719,7 +51592,6 @@
     { "name": "dc-texas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dehaanadvocatenkantoor.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "detulado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "deutsches-schutzportal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deve.software", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devflop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devicesgadget.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51763,7 +51635,6 @@
     { "name": "fietsambassade.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flemingmccullagh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flownonfiction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "foodsreborn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foodylab.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forexox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fotklinikenvarnamo.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -53024,7 +52895,6 @@
     { "name": "deswaffelaars.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devilbyte.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devilrecords.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "devopsbookmarks.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dewerveling.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dextra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dg-pic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -53330,7 +53200,6 @@
     { "name": "everycorneroftheworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "everystudent.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evilduck.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "evopack.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eworldmedia.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exitoseguro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exitreality.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54078,7 +53947,6 @@
     { "name": "lilypadwikisecret.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lindependant.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "linknaarlinux.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "linksbridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "linkview.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "linux-share.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lipetsk-centralniy.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55063,7 +54931,6 @@
     { "name": "tantrabali.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tapcloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "targetlonglife.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tavelbutiken.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taxi-doudoune.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tbi.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teahawaii.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55598,7 +55465,6 @@
     { "name": "apkfuse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apknut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apktechy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "apostascomvalor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appetiser.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appetitesanonymous.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appsbud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -56394,7 +56260,6 @@
     { "name": "thevoga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thinkprocedural.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiffanyblooms.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "timeswiki.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topmotoric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toptravelgram.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tournaments.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57889,7 +57754,6 @@
     { "name": "tmberg.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tmberg.se.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "togglename.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tongjistudents.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topmuzika.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toriko-official.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tornadoarchiv.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58070,7 +57934,6 @@
     { "name": "cugetliber.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cuongthach.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cvbp.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cyberex.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cybertrinity.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cynetco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyrilstoll.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59521,7 +59384,6 @@
     { "name": "esdarat.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "esignandpay.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "espaiblancandorra.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "essentry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "essnet.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eurobeaute.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "euroflorist.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60555,7 +60417,6 @@
     { "name": "shanikaonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shatabdichildrenschool.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sheltongrp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "shinyhappydoggy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shoujochronicle.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "showslot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shpori.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60981,7 +60842,6 @@
     { "name": "zuru.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "09kanagawa.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1986ventures.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "1b1.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2insights.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "40010monogatari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "44ada.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62179,7 +62039,6 @@
     { "name": "elmejorcortapelos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emls.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emmadreams.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "enbarra.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "entrepreneurnight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epiclawnpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "essex.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62249,7 +62108,6 @@
     { "name": "geosno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getahearing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmc-mca.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gogo.mn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goldensunmfg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golfkulur.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golyatsec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62476,7 +62334,6 @@
     { "name": "motiondreamatix.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "msoc.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mtehe-square.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "multivpn.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mungdog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mur-parfait.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mwpromotion.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62608,7 +62465,6 @@
     { "name": "thoreauskalendar.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ticketunity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiendamaspatchwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "timeslive.co.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timeticket.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timeticket.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toldosecoberturasbh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62968,7 +62824,6 @@
     { "name": "blockmomsest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blogspasest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bloodmissionsest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bluerange.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluetoothlasersers.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boardusersers.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bodrumescmagazin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64004,7 +63859,6 @@
     { "name": "lisanotes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "liverpoolmoneyman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "living-legends.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "loli.cam", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "londonjob.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "londonmoneyman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lordshaokahn.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64099,7 +63953,6 @@
     { "name": "muscles.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "musiq-supreme.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "muslitocomics.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mway.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myanimo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myelebest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myenglish.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64589,7 +64442,6 @@
     { "name": "virtual-assistant.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visit.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "web-industry.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "webfocus.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webinke.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weddinggram.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whitlockconstruction.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64800,7 +64652,6 @@
     { "name": "each.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eben18.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eboxtenders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecc.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "editions-campanile.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "egbertsen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "egoclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64829,7 +64680,6 @@
     { "name": "eurodanceperu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "europeananomalouswave.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evalinux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "exemplarypainting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eyecon.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fast4ever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastmeet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -65564,7 +65414,6 @@
     { "name": "julien.expert", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jurexcup.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kamatoycleaner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kazoohr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keio-formula.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kenrick95.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kernel-error.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66029,7 +65878,6 @@
     { "name": "ladyblackdiamoond.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "learningsolution.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lepka.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lgv-france.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "liberale-demokraten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lilawadee.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "limelightnashville.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66085,7 +65933,6 @@
     { "name": "mycats.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n4zm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nacionaltelha.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "narafood.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "narek.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nataliapearl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neoaviation.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66303,7 +66150,6 @@
     { "name": "webzschema.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wecreate.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "welove.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wenchengchou.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winnercivi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wipeoutracing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "workathomeideas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66805,7 +66651,6 @@
     { "name": "mypowerserg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "na.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nationalacademic.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "naturparadies-rheinauen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nemtilmeld.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nephrogo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nettiruletti.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71293,7 +71138,6 @@
     { "name": "bibliotheka.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bienenfreunde.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigart.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bighappy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigtown.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bilar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "binaries.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71468,7 +71312,6 @@
     { "name": "huapood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huisdierinfopunt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "husky-in-nood.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "i2education.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icmarket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ikorekofi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "il2eu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71679,7 +71522,6 @@
     { "name": "publiweb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puddingtheatre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puroyorganico.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "puroyorganico.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pycckue.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qiaowai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qumin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -73735,7 +73577,6 @@
     { "name": "superfavorite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "supersolenoid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "surma.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "swedbank.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taberna.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taktika.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "talki.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74640,7 +74481,6 @@
     { "name": "jkessen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jonslife.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jouwzorgjob.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kancelyaria.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiapartsnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kintanalodge.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kristyvonkashyyyk.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -75261,7 +75101,6 @@
     { "name": "cazoo-dev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cazoo-test.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cazoo-test.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cazoo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cazoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "certivac.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ch-poitiers.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -75877,7 +75716,6 @@
     { "name": "c19bromhexine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c19curcumin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c19early.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "c19favipiravir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c19fluvoxamine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c19hcq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c19ivermectin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -75974,7 +75812,6 @@
     { "name": "locationsiledyeu.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loson.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loyloy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "luxushair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maid.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "manderstam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marocfoot.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -76571,7 +76408,6 @@
     { "name": "blairtalbotmotors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blissfulsmile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bordercrossingux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bosquedepalabras.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boumstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bracesbyberry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bratt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -77749,7 +77585,6 @@
     { "name": "emotality.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "empadaoportugal.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emtex.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "erinandken.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "erogen.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "essecharlie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "esthergoh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78059,7 +77894,6 @@
     { "name": "terraso.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tests.school", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thefantasyrooms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thegasshop.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thehonoursystem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thinkhealing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tieulinh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78181,7 +78015,6 @@
     { "name": "d3scene.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dalat.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dc-zone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "debrunet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defelo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dermaprocollagen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devtechgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78293,7 +78126,6 @@
     { "name": "reachdigital.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "revealcellcamtracker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rmt-construction.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rumah123.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sait.health", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schittscreek.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "segdo.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78435,7 +78267,6 @@
     { "name": "dodiedods.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamcatchers-events.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dymond.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dziseldra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eagleplanners.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eastmedo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "egdsk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78481,8 +78312,6 @@
     { "name": "handsonscience.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdfreeizle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdfreex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hdmixfilim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hdsinemax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdxxxpics.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hiringopps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoast.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78662,7 +78491,6 @@
     { "name": "valdor2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vcross.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verificationlink.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vianetplc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vinocapka.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vipmercedes.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voice-pic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -78836,7 +78664,6 @@
     { "name": "alienclicker.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alignedtoachieve.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alimanaka-rabesata.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aliud.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alkel.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "all-bikes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -79311,7 +79138,6 @@
     { "name": "castlevaniaspain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catchup-enschede.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cattellar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cattiau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catto.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cauquenes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbnegocial.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80136,7 +79962,6 @@
     { "name": "gill-cote-bistro.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gill-temptation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giorgiosite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "giuseppebuccheri.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gkq.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glamorously-built.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glaserceramics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80472,7 +80297,6 @@
     { "name": "infomeddnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "informasidumay.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infoternet.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ingenieriaclinica.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ingridvanderveen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inkblot.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inlineskates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80721,7 +80545,6 @@
     { "name": "ktty.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kumo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kuncrypto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kundesjekk.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kunst-na-arbeid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kurdishcommunityofottawa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kurs-fotowoltaika.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81551,7 +81374,6 @@
     { "name": "robinb0s.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robinbos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robinsremembered.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "robintimmers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robkish.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robloxenthusiasts.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robocorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82074,7 +81896,6 @@
     { "name": "thevegcat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thewarehousefellowship.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thewhizkids.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thisisarecording.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thisisreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thoenesfamilierecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thok.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82153,7 +81974,6 @@
     { "name": "topgevelbekleding.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topnews.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topsexik.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tor.taxi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torocatala.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torsdammen.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82495,7 +82315,6 @@
     { "name": "xpetit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xrdd.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xsait.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xxx-fiction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xylos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yaraab.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yardtower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82526,7 +82345,6 @@
     { "name": "zagerijstraat51.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zakarpattya.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zankevich.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zanreal.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zaparoh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zarabotai-doma.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zarezerwuj-nocleg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82559,7 +82377,6 @@
     { "name": "1001n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "100beauty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "100fast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "100pay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "100reach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "10198.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "10628.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82596,7 +82413,6 @@
     { "name": "20plus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "21ce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "21domain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "21eb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "21er.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "21expo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "21football.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83071,7 +82887,6 @@
     { "name": "convertr.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coolspeak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coomer.party", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cornwallda.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "corridorsands.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "corsohaccp.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "costi.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83175,7 +82990,6 @@
     { "name": "dissolution-sci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "distant.land", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dizkartes.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "djdavid98.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "djfrenchy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dlaces.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmautomek.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83202,7 +83016,6 @@
     { "name": "drillster.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drillster.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drillster.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "drillster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drillster.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drillster.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drillster.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83355,7 +83168,6 @@
     { "name": "firatcakir.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firmant.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstchurchmn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "firstqa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fisa.net.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fishfive.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fishman.idv.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83971,7 +83783,6 @@
     { "name": "mondo.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monkey-donkey.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mooana.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "morphed.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moserhof.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "motion-a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "motte.tattoo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84012,7 +83823,6 @@
     { "name": "nataliaanderson.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nateoster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nav.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nbhwj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ncat.tokyo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nctu.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neatful.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84452,7 +84262,6 @@
     { "name": "projet-pastel.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "properties.org.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proressources.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "prosvita.dp.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proweb-design.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prozoneplan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "psacertified.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84878,7 +84687,6 @@
     { "name": "topvpn.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tortillas.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toscanaecommerce.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tot.money", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toto-realestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toulouselautrec.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "touroogle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84918,7 +84726,6 @@
     { "name": "uxlinux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uzkalip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uzzamari.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "va-11-hall-a.cafe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vacanze-in-montagna-dolomiti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vacanze-merano.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vaderochvind.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85158,7 +84965,6 @@
     { "name": "activenl.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "activities.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "admini.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "advapacs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aegeanmep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aegee-academy.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aegee-academy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85435,7 +85241,6 @@
     { "name": "gn00.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goddess.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gomovein.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gorodshinspb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpiimimika.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandlineshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greatlakesintegrativemed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85850,7 +85655,6 @@
     { "name": "sloepverhuur-roggebroek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sluderno.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartagilesolution.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "smyrilline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snacktakos.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snz.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "socfactor.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85881,7 +85685,6 @@
     { "name": "svatba.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "svenskdam.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "swagmoney.enterprises", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "swanvinylworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sylwiaipiotr.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "systemysportowe.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taetomeister.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85926,7 +85729,6 @@
     { "name": "tommypalarsson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tommypalarsson.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tomofsweden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tooltot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toothimplantsydney.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tpedu.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradeview.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86020,7 +85822,6 @@
     { "name": "zwedenautohuur.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zwitserlandautohuur.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zzls.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "123verhuislift.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "133335.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1naturalway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2xgraphik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86089,7 +85890,6 @@
     { "name": "camella.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carbonswap.finance", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caribbean-tekton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cbpridecenter.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cgo-it.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chartpixel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chesapeakecluttercontrol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86225,7 +86025,6 @@
     { "name": "labordude.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lamminhquang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lasvegasdiscountattractions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lemoniax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "level4.parts", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "logopedietaalrijk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lolo17.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86267,8 +86066,6 @@
     { "name": "onilacare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "online-wholesalers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opdera.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "operationlifeline.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "operationlifeline.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "optgo.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orchideemilano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osallistuvavantaa.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86383,7 +86180,6 @@
     { "name": "wyngatepta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xtom.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xtom.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yashu.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yogasuitsyou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yourforcesupport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zaneslaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86854,7 +86650,6 @@
     { "name": "footlettuce.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forge.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortune-healing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frontiersinflight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fujimurado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fullintel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fundingpartner.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87017,7 +86812,6 @@
     { "name": "neshtata.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "netobur.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newage.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nextcloudcn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nft-dev-web.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nft-qa-web.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nft-uat-web.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88003,7 +87797,6 @@
     { "name": "r-ay.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radbee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radianceswimwear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "radiometeor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "railfans.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rampeboreal.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ratemyfishtank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88256,7 +88049,6 @@
     { "name": "yumtaro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "z.mom", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zandmhomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zanreal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zbrsk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zelandnamiru.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ziz.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88347,7 +88139,6 @@
     { "name": "champslearning.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "checkmarx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chendhurcollections.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cignium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "citymeats.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clague.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cleanhortihigienizados.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88460,7 +88251,6 @@
     { "name": "fivegraces.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flex-one.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flowerscaffe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fluidattacks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "focusbetaffiliates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "follygardens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foreverpontiac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88611,7 +88401,6 @@
     { "name": "metu.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mianra.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "milliongrounds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "millionlearn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmsteelny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mobox.health", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moniquevanhoutum.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -89289,7 +89078,6 @@
     { "name": "elderdevelopmentgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elliottwoodworking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emailing.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "emilsleker.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ericdobson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "essaandmore.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ezec.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -89313,7 +89101,6 @@
     { "name": "furry.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "futurygames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fwo.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gabtitui.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gatewayp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "genesiscoding.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geranium.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -89717,7 +89504,6 @@
     { "name": "distribuidorguarani.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "divorcemortgage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "divviup.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dksh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "docguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "donquix.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dot.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -89804,7 +89590,6 @@
     { "name": "gmkdetailing.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "godsunchained.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goldoniclothing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gonitro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodcas.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodcas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gotravel.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -89880,7 +89665,6 @@
     { "name": "kadenhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kadifeli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kahoot.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kaikrups.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kdo-vola.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keysix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "khronos.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90100,7 +89884,6 @@
     { "name": "shinycleankitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "showsnob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "siberianhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sidefx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "signrequest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sikkasoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "simplymeatsmoking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90162,7 +89945,6 @@
     { "name": "theretailbulletin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theskiweek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thetechnicaldost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "theyachtweek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tjgrant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toilet-guru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "totalexpert.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90329,8 +90111,6 @@
     { "name": "castelflowers.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccslt.org.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "centralesnucleaires.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "century21.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "century21.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cesonia.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chaldal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chamath.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90353,7 +90133,6 @@
     { "name": "comtois.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "concor.ne.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "contrastsecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "coresignal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "corsac.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "country-candles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coursesweb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90689,7 +90468,6 @@
     { "name": "agiftinside.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agilecoldstorage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agrarkredit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ahbvlp.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahoj.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aircgroup.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "airfaretousa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90766,7 +90544,6 @@
     { "name": "alancolephotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "albertovr.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "albinonderdelen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alex-werbung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexmathews.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alfa-pack.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alfapack-shop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -91558,7 +91335,6 @@
     { "name": "sociohosting.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "solocorse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soluruse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "solware.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sommer-reitmajer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sota.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "southwesttest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92128,7 +91904,6 @@
     { "name": "aff1xstavka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aff1xstavka.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "affiliates-psychicsource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "affinity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "affinitycu.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "affpa.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afrag.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92353,7 +92128,6 @@
     { "name": "anonhq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anonymfile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anonymous.com.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "anonymousemail.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anoopcnair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anoservices.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "answersincme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92455,7 +92229,6 @@
     { "name": "articledaily.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "articulo19.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artifacthub.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "artifex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artifort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artishevski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artmark.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92516,10 +92289,8 @@
     { "name": "attomdata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "attsavings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atttrainings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "atwk.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aubtu.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "audifs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audio-extractor.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audio-joiner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audiobookss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92779,13 +92550,11 @@
     { "name": "bigbootytube.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigbrother.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigbuild.vic.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bigcedar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bignaturals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigtitsmilf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bigtitsporn.pics", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bikemi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bikerestart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bildung-mv.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bildungswelt.dvag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "billboardchartstars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "billetto.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92942,7 +92711,6 @@
     { "name": "bodyheightweight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boerger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolbilisim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bonitasoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bonjourlulu.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bonnovel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boobsgirls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92965,7 +92733,6 @@
     { "name": "braincorebismarck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brainguru.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brainguru.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainmanager.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brainporteindhoven.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brainware-india.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brambles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93336,7 +93103,6 @@
     { "name": "cmmcinfo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmrlink.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmscompany.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cmsnl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmw.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cnb1901.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cncexplorer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93512,7 +93278,6 @@
     { "name": "crimemuseum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crimewatch.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crimewatchfl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crimtan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "critfc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crmot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cron.uz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93617,7 +93382,6 @@
     { "name": "datastar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "datawrkz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "date-conference.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "datenightmovies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidbach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davison.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davisvision.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93678,7 +93442,6 @@
     { "name": "desertharvest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "designbro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "designengineering.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "designstripe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "desinfection-gale.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "desitorrents.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deskmoz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -93965,7 +93728,6 @@
     { "name": "elegantlacebridal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-reibsch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-wandelt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "elementorfa.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elementsofeducation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elettronew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elevatewebdesigns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94103,7 +93865,6 @@
     { "name": "eventseeker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "everestbankltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evergladesfarmequipment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "everhome.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evertz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "everyademo.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94320,7 +94081,6 @@
     { "name": "forbes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forbeser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foreningssparbanken.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "foresite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forestdeclaration.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forestvets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forexclubfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94483,7 +94243,6 @@
     { "name": "gear4music.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geauxdns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gebrvoit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "geckoroutes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geluidsverwachting.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "generators-pro.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "generix.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94667,8 +94426,6 @@
     { "name": "hairytube.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hairywomen.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hairywomenpics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "haitangsoshu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "haitangsoushu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hakurei.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hallmarkbusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hamibot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94783,7 +94540,6 @@
     { "name": "highlycompressedzip.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "highposthoops.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "highstakesdb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hillsclerk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hillstohome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hiltonfoundation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hiltonsedonaresort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94816,7 +94572,6 @@
     { "name": "homeoperator.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homepage-nach-preis.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homerecording.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "homeslong.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homeworkhelpwriters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homeworksuite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homokfuvo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -94985,7 +94740,6 @@
     { "name": "image.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imagequix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imdb.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "imediatoonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imeiorder.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imibo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imigrasilampung.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95448,7 +95202,6 @@
     { "name": "ladyboyfiles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ladyboytube.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laegemiddelstyrelsen.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "laetitia-hypnocoach.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laetusinpraesens.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laget.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laguiainmobiliaria.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95653,7 +95406,6 @@
     { "name": "loanscanada.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lobandsmash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "localcdn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "localexpress.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "localize.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "locksoflove.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loco.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95795,13 +95547,11 @@
     { "name": "maptician.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marcelovasconcelos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marcha.org.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "marcypro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marebca.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mariamindbodyhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marifilmines.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marijang.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketingtutor.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "marketnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketresearch.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketsnerd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marketvolume.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95979,7 +95729,6 @@
     { "name": "miomiojoyeria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mirasee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "miroslavholec.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mirrormonster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "misa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "misc.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "missingchildreneurope.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95994,7 +95743,6 @@
     { "name": "misterdomain.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mitel.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mitt.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mixedanimals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mixnmojo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mkala.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mkinfo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -96184,7 +95932,6 @@
     { "name": "nakib4tech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nala.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "name.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "namecoinnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "namozagy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nanafeed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nanaya.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -96597,7 +96344,6 @@
     { "name": "papaimama.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "papakarlotools.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "papascoffee.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "papayapay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "papelisimo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "papersowl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "para-sports.tokyo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -96874,7 +96620,6 @@
     { "name": "posttoday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pottkinder.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pp.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ppaya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ppcgeeks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ppcsesco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ppf.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97022,14 +96767,12 @@
     { "name": "quantfury.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quantiply.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quantum.st", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "quantuscreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quebec.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quebecsolidaire.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "queer.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quicknode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quickrdp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quicksell.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "quickstart.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quidax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qwasar.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "r-e-a.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97091,7 +96834,6 @@
     { "name": "rcprogranada.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rcslt.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rdn-team.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "reachum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reactheme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "read-myheromanga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "readingoutpost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97248,7 +96990,6 @@
     { "name": "rewirenewsgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rewolucja1905.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rewriteguru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rewritertools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rexo.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reyesholdings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rg.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97280,7 +97021,6 @@
     { "name": "rochesterymca.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rockcult.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rockinmama.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rojavainformationcenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ronandez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ronc.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rooneyholdings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97436,7 +97176,6 @@
     { "name": "sciencetoymaker.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scml.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "scores24.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scoresense.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scorpexuke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scotiabank.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97744,7 +97483,6 @@
     { "name": "sounds-resource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "souqalsyarat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sourceadvisors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "southlandcasino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sova-center.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soychile.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soycomocomo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97849,7 +97587,6 @@
     { "name": "stgusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stgy.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stichtsevecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stidmobile-id.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stirringphoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stitchlabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stluciamirroronline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -97896,7 +97633,6 @@
     { "name": "stunningafricandresses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sturents.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stwcreation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "style-style.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stylight.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stylight.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stylight.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -98300,7 +98036,6 @@
     { "name": "trademotion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradesecretslaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradition.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trails-end.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trainbusferry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "traintoday.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trannysurprise.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -98683,7 +98418,6 @@
     { "name": "vrconk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vrcosplayx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vrimmoexpress.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vriresorts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vrre.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vrumcar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vse-dostavki.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -98855,7 +98589,6 @@
     { "name": "wirebank.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wiredrelease.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wirelessfestival.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wirelesslogic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wirelly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wirings-diagram.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisatasingapura.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99091,7 +98824,6 @@
     { "name": "1001telecommandes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1024.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1057thehog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "10pearls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "118118money.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "123host.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "123moviesonline.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99138,7 +98870,6 @@
     { "name": "2daysmood.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2one.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3dmili.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "3sisecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "401ksite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "444manualtherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "480ptvseries.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99722,7 +99453,6 @@
     { "name": "completed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "comsian.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conectens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "connectedinvestors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "connexio.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "connor.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "consuldat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99750,7 +99480,6 @@
     { "name": "craftwarehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "craniosacralsimeoni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cratexcalgary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crax.tube", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crazynetwork.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativemarket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "credigo.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99815,7 +99544,6 @@
     { "name": "dattelking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dattelking.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dature.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "daunt.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidcrousehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidlouisedelman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davidmgarvin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -99970,7 +99698,6 @@
     { "name": "educationdegree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "educationendowmentfoundation.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edufever.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "edufever.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eduresultbd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edvservice-pohl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eeagrants.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100169,7 +99896,6 @@
     { "name": "framer.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francerent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "franchiseportal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frankeschenfelder.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frasicelebri.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fraudtoken.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "free-tarot.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100408,7 +100134,6 @@
     { "name": "hrreporter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huangban.org.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huddlecamhd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "huffingtonwire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hug0.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hugotech.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "humanresourcesedu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100440,7 +100165,6 @@
     { "name": "ilsaperedelgusto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imaret.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imarketly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "imgmodels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "immoaval.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "immobilienservice-website.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "immobilo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100592,7 +100316,6 @@
     { "name": "kinde.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kindernothilfe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kinecenter.ec", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kingedwardvii.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kipa.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kirchner.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kirstengillibrand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101070,7 +100793,6 @@
     { "name": "noid.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noid.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noithatbachtin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nomerel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noosebrigade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nopiamanual.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "normalinlinden.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101345,7 +101067,6 @@
     { "name": "rachaelsmaids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radarcupon.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radioevolucion.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "radiopatapoe.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radpath.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "raidentawork.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rainerstoll.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101552,7 +101273,6 @@
     { "name": "shoppersvineyard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shoprentone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shortbreakstudios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "shortcut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shoutmecrunch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "showmoviz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "showmyip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -101943,7 +101663,6 @@
     { "name": "vande-walle.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vandersmissen.lawyer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "varmaz.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vasaivirarnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vcdspro.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vcsc.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102265,7 +101984,6 @@
     { "name": "alpa.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpha91.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "althacare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alvaro-smith.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amaisd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ambarbyarihant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102322,7 +102040,6 @@
     { "name": "august.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aussiesnus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autista.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "autopistadelitata.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autos-motos.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auzzie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avenir-now.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102601,7 +102318,6 @@
     { "name": "duckyubuntu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dudushu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dulcehome.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "durka.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dynotraining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dzg-ev.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "e-ticaret.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102963,7 +102679,6 @@
     { "name": "kami-riha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kampova.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kantoorartikelen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kanuking.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kassen-zero.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kasu.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kateduggan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103631,7 +103346,6 @@
     { "name": "tepco2021.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tfinfo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thea-meditation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thebarclay.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thegreendigest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thekitchendoor.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thekitsunesden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103707,7 +103421,6 @@
     { "name": "ungovernable.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unikimages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unipolrsa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unitingwa.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unitop.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unitycardiology.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urbanevielfalt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103828,7 +103541,6 @@
     { "name": "234.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2mades.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2mp.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "365886.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7203.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "740cashbuyers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "86606.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103977,7 +103689,6 @@
     { "name": "dachlaeufer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "darrenflemingphotography.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daxo.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "daymi.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dbautoservice.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dcampusbd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dddd.loan", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104170,7 +103881,6 @@
     { "name": "kapaci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karakafa.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keks.loan", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kellerencompass.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kerautretvian.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keyestudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kidm4k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104213,7 +103923,6 @@
     { "name": "lomond.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lonelybitcoin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "luckybeantravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lukas21.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "luppa.loan", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "madinatech360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "madmoizelle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104498,7 +104207,6 @@
     { "name": "thepioneersgame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "therapeiacosmetics.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "therhodesresidences.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thewebagent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timefracture.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timelettings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timochan.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104526,7 +104234,6 @@
     { "name": "trueamateurs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "truechimer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trueformroofing.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trueworlds.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tsutaya-ai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turanogluoptik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tvorog.dedyn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105289,7 +104996,6 @@
     { "name": "attorneyrebeccawhittington.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aubay.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audiosite.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "auribus.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "austincosmetic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auto-albrecht.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auto-delchev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105417,7 +105123,6 @@
     { "name": "casacenina.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casasbandeirantes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catphysics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "catrins-kunst.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccvr6smarthome.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceenic.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceeteegee.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105808,7 +105513,6 @@
     { "name": "francishouserecovery.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freak-waves.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frenger.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "friotemp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frontmeedia.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fruitdiva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "furniturestrends.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105996,10 +105700,8 @@
     { "name": "kik.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kik.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kik.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kikchat.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kingandmcgaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kinoks.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kittleapps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiyokosimmons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kk-bs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klaymemez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106064,7 +105766,6 @@
     { "name": "livewebtutor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lizzymcc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ljskatt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "log.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lois-bullion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "longboatlocal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "longbsants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106115,7 +105816,6 @@
     { "name": "metrobank.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "metromark.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "meuemby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "michelson.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "microdot.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mignet.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mikrothink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106553,7 +106253,6 @@
     { "name": "topmaxstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topprogaragedoor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topsights.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tortimes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "touchofjapan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradition.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trakmd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106609,7 +106308,6 @@
     { "name": "vibromax.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "video-lab.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vilamoura-car-hire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vineeth.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vitabrillanti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viviendacoomeva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivos.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106626,7 +106324,6 @@
     { "name": "watchthis-svp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "waterlandtuinen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "watto29.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wavelifesciences.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wayaberolodge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "web-direct.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webhostingmagic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106769,7 +106466,6 @@
     { "name": "562656.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "562956.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "563398.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "563699.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "568756.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "593398.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "639063.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106921,7 +106617,6 @@
     { "name": "apsreview.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aquila.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arab2cam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "archiweb.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "areawidepainting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "areins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "areinshospitality.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106980,7 +106675,6 @@
     { "name": "baroqueworksstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bartoliconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "basisvaardigheden.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "basketcase.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "batistasbakery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bayliss.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bayliss.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107150,7 +106844,6 @@
     { "name": "csghomedesignbuild.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cubeinstallations.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cuo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "customer2you.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberfla.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cybersecuritydegreeguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cybersecurityeducationguides.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107395,7 +107088,6 @@
     { "name": "greatamericanuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greve-behrens.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grigoraslaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "group-galore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "growth.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gruenhagenlaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grupoeitb.eus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107421,10 +107113,8 @@
     { "name": "hanmanshijie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hanmanxia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hanshow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hardcore-toys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hashbl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hatinyhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hatsnet.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hautemontagne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hcelite.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdaccess.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107482,7 +107172,6 @@
     { "name": "imigrant.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "indigenous.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inlomax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "inmueblescaribe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "insaneair.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inspireplanner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "institutoliderar.edu.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107537,7 +107226,6 @@
     { "name": "kanabun.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kanduit.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kastuvas-tau.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kat.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "katherineandkegan.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kelyon.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kelyon.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107829,7 +107517,6 @@
     { "name": "peyote.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phagyo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phonevibrator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "phorcys.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phparena.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phrenology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "physicaltherapistassistantedu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107954,7 +107641,6 @@
     { "name": "rxphoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rybak-opt.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rybak-russia.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ryder.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rydercragie.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rydercragie.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ryderstatus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108224,7 +107910,6 @@
     { "name": "wushka.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wuw.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyriverton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xiaozonglin.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xiurenwang.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xmessy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn----otbabmp3ae.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108342,7 +108027,6 @@
     { "name": "4100.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "413504.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "4222.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "42bit.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "4333.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "439182.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "452895.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108615,7 +108299,6 @@
     { "name": "bmskibaru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bnssigns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boardgameshots.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bodies.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boesckens.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bointon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolognatsrmpstrp.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108783,7 +108466,6 @@
     { "name": "cyraco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d-influencers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dacgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dachnie-reshenia.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dachnyvopros.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daer.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dagestan-guide.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109536,7 +109218,6 @@
     { "name": "oemparcacim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ogorodnik.guru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ogorodoved.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oksichemk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oldhousetonewhome.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olivier-verbois.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olofly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109910,7 +109591,6 @@
     { "name": "streetwitnessing.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strenge-zucht.schule", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sub-health.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "subastatutraslado.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "suckerberg.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sulakskii-canyon.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "summit-research.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110016,9 +109696,7 @@
     { "name": "traccxs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trackadblock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transanglo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "transfer-sheregesh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transfer-v-sheregesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "transfer-vsheregesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transfera-sheregesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transfero-sheregesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "transfery-sheregesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111147,7 +110825,6 @@
     { "name": "carolinelanglois.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casa-carla.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caunceohara.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cboost.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbozarks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccnda.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cec.org.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111504,7 +111181,6 @@
     { "name": "hdsaglik.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "health-toolbox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heatherlydesign.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hedd.audio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heibobo.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heibobo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heibobo.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111616,7 +111292,6 @@
     { "name": "jinkou.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jinkou.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jinkou.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jjfxz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joaquimfialfotografia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobsboard24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jonssheds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111823,7 +111498,6 @@
     { "name": "naturschutz-holderbank.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "navajasdesupervivencia.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "navegantesdelcosmos.ec", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nbadao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nbit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neenan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neh.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111839,7 +111513,6 @@
     { "name": "nicolaslogerot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nicwortel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ningwei.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nirvati.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nitolab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nixorigin.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nja.id.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112011,7 +111684,6 @@
     { "name": "readybyjosh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reallight.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rebure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "recyclenow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redsift.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redsift.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redsift.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112031,7 +111703,6 @@
     { "name": "rhinosf1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rhyno.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rhysg.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "riaiai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rickoriginal.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "riderchris.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rime.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112055,7 +111726,6 @@
     { "name": "sadeem.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safety.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safetysource.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "saiserver.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "salge.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samuelphotos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sandbox.i.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112180,7 +111850,6 @@
     { "name": "sxjjt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sxmnm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sxqxmx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sxtik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "synchrocity.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "synergyofserra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "szemuvegtrend.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112208,7 +111877,6 @@
     { "name": "theafricanvibeking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thecfef.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thediligentwoman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thefinx.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thegamecave.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thegameroof.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thegreenlawreport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112217,7 +111885,6 @@
     { "name": "themusketeerslodge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thephoenixdg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theprinterjam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "therapie-fricktal.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thesaltsanctuaryfl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thescriptinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theskepticalreviewarchive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112314,7 +111981,6 @@
     { "name": "vipuser.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visionsc.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visiquate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "visitsugartown.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vistapaket.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visu.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivagy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112438,7 +112104,6 @@
     { "name": "yinwa.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yjrk.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yliarb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ynrrsr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yofi-yofi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yomeuno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yooznet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112526,7 +112191,6 @@
     { "name": "99dog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "99music.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9fruit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "a06.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a1cookingequipment.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a340.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a64.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112563,7 +112227,6 @@
     { "name": "agencestaff.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agent4fl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agilextra.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agilusdiagnostics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agrifoglio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agriportal.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aguaazul.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112645,7 +112308,6 @@
     { "name": "atlantclinical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atlassen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atlastravelvic.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "atomeus.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atuallemoveis.ind.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aucoindubloc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audiobone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112893,7 +112555,6 @@
     { "name": "creamless.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativeconsult.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativefocus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "creativityalliance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creditshanghai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crewresourcesinternational.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crisp.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113336,7 +112997,6 @@
     { "name": "goodbenefit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodcoat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodcollection.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "goodcotton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodeditor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodenvironment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goodface.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114266,7 +113926,6 @@
     { "name": "rusty44.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rusweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rygyatacado.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "s-hertogenbosch.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sa-stu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sabrinajoias.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sacerdos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114565,7 +114224,6 @@
     { "name": "theprimegroup.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theruraltrust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thervgeeks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thesupremacyg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theultimateshave.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theweald.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thinapps.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114581,7 +114239,6 @@
     { "name": "tibinonest.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tieffeservice.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tieli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tiendacomprasegura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiktokdownloader.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timefinger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114658,7 +114315,6 @@
     { "name": "uae-auto.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ubigeo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uchiha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ucraft.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ultrafree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ultrapedic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ultraseven.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114802,7 +114458,6 @@
     { "name": "wiederum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wilsoninfanteadv.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "windhamworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "winedoor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wl-bank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wl-bank.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wl-bank.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115208,9 +114863,7 @@
     { "name": "alitv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alkame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allerheiligenkirmes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alliancetrading.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allindustriessolutions.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alljoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allnaijagists.com.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allpatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alltak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115600,7 +115253,6 @@
     { "name": "carefree-creative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caremind.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carfashion.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "carlasecrets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carohq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carportus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carsvans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115683,7 +115335,6 @@
     { "name": "chrisandian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chrismurray.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christian-laubender.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "christianbsl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chupanhdao.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cima-alfa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cinematik.fans", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115852,7 +115503,6 @@
     { "name": "depicus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deportescr.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dequency.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "derbysound.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "derekgendron.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dermatit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dermatologyandlasergroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116293,7 +115943,6 @@
     { "name": "fzinfo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galenzoski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galgamer.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "game-developers.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gamerkick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gamesaid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gandmfamilydental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116401,7 +116050,6 @@
     { "name": "gubia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gugumu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guillaumesworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gunduzyucel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gunting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guoyang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gurufox.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116524,7 +116172,6 @@
     { "name": "heronhallacademy.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herwz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herzi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "het-klaverblad.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hexene.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hh-ri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hhdy3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116671,7 +116318,6 @@
     { "name": "ironmongeryexperts.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "is-real.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "isentek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "isidore.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ispc-synergies.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "israel21c.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "it-altstadt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116941,7 +116587,6 @@
     { "name": "langer-bauwerk.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "langthaler.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "languageispower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lankatongtravel.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lanlaog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lanren.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lanzastil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117558,7 +117203,6 @@
     { "name": "pdavislawgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peacesky.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peakchina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pearsonbsl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pedrola.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peduse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peers-liste.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117628,7 +117272,6 @@
     { "name": "power-bi-connector.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "power-bi-connector.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "power-bi-connector.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "powerplay.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pozycznamiot.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ppfcalculator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ppktgti.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118206,7 +117849,6 @@
     { "name": "supertape.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "superworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "surfplan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sussexsecurityinstallations.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "susteel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "svampbob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "svrtech.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118235,7 +117877,6 @@
     { "name": "tails.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taims.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tairuide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "taiwanbible.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taiwancan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taiwanexcellence.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taiwanplaza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118393,7 +118034,6 @@
     { "name": "tiktokv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tillinger.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tilpa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tilyexpress.ug", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timbertreasure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timbertreasures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timelybookkeeper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118443,7 +118083,6 @@
     { "name": "topsuper60.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topsuper60.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topsuper60.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "torrelorenzo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toshiroz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "totstraksonline.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tour-de-franz.bike", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118537,7 +118176,6 @@
     { "name": "unganisha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unicodeagentur.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uninatural.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unique-app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "universoagropets.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unlimittech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unmaskingtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118577,7 +118215,6 @@
     { "name": "vastu.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vatnik.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vebeco.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "velocitytech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vendloop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "venusvprincess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verbundkredit.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118883,7 +118520,6 @@
     { "name": "zgcbc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zgsmc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zhaijibian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zhaso.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zhcg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zhekoujie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zhenjia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118929,7 +118565,6 @@
     { "name": "zttv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuancheng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zuichongqing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuidong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuipinyin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuishanghai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118963,7 +118598,6 @@
     { "name": "8i3m2a67.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a-b.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a8438pb3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "a9-9.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aaic.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abacusnt.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abdul.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119157,7 +118791,6 @@
     { "name": "australaccountants.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoarena.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoblog-de.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "autochin.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autohubmarketing.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avengepet.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avthelsinki.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119207,7 +118840,6 @@
     { "name": "bitterley.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blackmark.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blevinstirepros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "blockchainreporter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blockedservers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bloscheck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bloscheck.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119230,7 +118862,6 @@
     { "name": "bruckenbauer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brunoriguzzi.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bth.dance", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "budidayatani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buicha.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "builddesygner.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "burkebarclaylawoffice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119851,7 +119482,6 @@
     { "name": "ideapanda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igmedia.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ihoofs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ilaunch.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilustradanuvem.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "immo-express.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "impec-cable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119935,7 +119565,6 @@
     { "name": "keyfriend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kfc.bike", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kgdev.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "khord-kon.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kidneyst.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kidsblock.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kindler-design.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120193,7 +119822,6 @@
     { "name": "mysoft.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysteryplay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysticexperience.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mythoughtsideasandramblings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myvawic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nachrichtenblatt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nachteile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120601,7 +120229,6 @@
     { "name": "ruyan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rvc.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ryanhopk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sabinearendt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sacredheartmission.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sadrailsim.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safefly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120969,7 +120596,6 @@
     { "name": "tzimisce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ubwash.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ucscard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "udenit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ufero.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ufochina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ufuna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121352,7 +120978,6 @@
     { "name": "ambassify.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amelia-wedding.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amiatlanticare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ammex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "analyticsinsight.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andersonenergy.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andree.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121510,7 +121135,6 @@
     { "name": "bebrik.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bebrochka.loan", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beebruh.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beebuy.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beebuy.restaurant", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beeebraa.download", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beiyongjin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121603,7 +121227,6 @@
     { "name": "cardswith.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carefu.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carlijnottens.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "carloscolina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carlsonfonder.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carlsonfund.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carlsonfunds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121768,7 +121391,6 @@
     { "name": "dg-hyp.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dg-hyp.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dghyp.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dhursanconstruction.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dianchoi.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dianzipan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diet-hack.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121840,7 +121462,6 @@
     { "name": "drbaxter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drdomain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dressrose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dripflow.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dronedeploy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drugrehabjohannesburg.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dubboskills.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121861,7 +121482,6 @@
     { "name": "easyenjoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ebs.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecco-verde.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecolequebec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecopowerenginewash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecoscanapp.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ect-telecoms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122572,7 +122192,6 @@
     { "name": "olgamilosevic.edu.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olmportal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onenetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "onepieceplayer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onepointzero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onlineinfo.freesite.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onuruzunonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122749,7 +122368,6 @@
     { "name": "pvrtours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qbotica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qiangshen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qianlong.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qianmu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qianshuo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qianzhanggui.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122803,7 +122421,6 @@
     { "name": "rocketsales.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rocknrowdyranch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rsa-services.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rude.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rumemi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rutgershealth.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ruzovyslon.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123526,7 +123143,6 @@
     { "name": "ao2law.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apex.aw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "app-sharepoint-v1-pro-crd-hd.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aprileporte.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aprimatic.msk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aqu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "armour.ventures", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123570,8 +123186,6 @@
     { "name": "azalhavayolu.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "azemardstephanie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "b.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "b2bpoke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "babaka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "badmintonracketreview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baebronx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bai-bao.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123703,7 +123317,6 @@
     { "name": "borzamalta.com.mt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boucherie-restaurant-les-provinces.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boxhall.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "boxpark.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bravurabusinessconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brewmovers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bryandrakedrivingschool.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123794,7 +123407,6 @@
     { "name": "coduzion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cognitioweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coincap.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "colapsys.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "colis-collecte.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "collaboration.cafe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "collezione.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123904,7 +123516,6 @@
     { "name": "e-launch.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eachdns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eaglerun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "earnosethroat.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "earthcouture.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "earthwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "earthytales.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -124169,7 +123780,6 @@
     { "name": "homedesigncompany.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homeserver-kp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hompimpaa.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hondapowerproducts.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hongxiaodou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "honzakulig.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hopi.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -124996,7 +124606,6 @@
     { "name": "tablion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tachip.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tadaaam.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tagbin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tahititourisme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tahititourisme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taidou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125134,7 +124743,6 @@
     { "name": "vigrid.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "villafashion.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ville-vif.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vinciu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visioned.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visiontaiwan.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vitallearning.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125415,7 +125023,6 @@
     { "name": "agen62.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agrartermine-deggendorf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agrartermine-straubing-bogen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agrinous.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahl.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahli.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahouansou.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125553,7 +125160,6 @@
     { "name": "asnaz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aspec-md.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assentfitness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "assignmenthelper.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assinare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assinare.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assinare.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125645,7 +125251,6 @@
     { "name": "bdty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "be-bellence.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bean-jam.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beardsorcery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bearly.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bearslakeinn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beautyrepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125794,7 +125399,6 @@
     { "name": "botanical-design.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boundlessmediausa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bountiful.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "boutibag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boutiquecoureurdesbois.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "box.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boynet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126089,7 +125693,6 @@
     { "name": "crrow777radio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptin-it.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptomarketrade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crystaleez.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "csdurant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cse-sna78.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cswrld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126643,7 +126246,6 @@
     { "name": "garnerseo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garo.legal", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garstonvets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gasfitermaipu.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gates-of-olympus-app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gavaskee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gavintang.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126684,7 +126286,6 @@
     { "name": "glazenschuifwandenoutlet.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "globalawakening.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "globalbroadcastsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "globalloungenetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "globalroad.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glosarios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmtelectrical.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126719,8 +126320,6 @@
     { "name": "gozenhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpcmicro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpr.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gptunnel.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gptunnel.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpu.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grabowski.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grabrfi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126749,7 +126348,6 @@
     { "name": "gretalfoodproducts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gretel.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gridcodestudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "groovyrelocation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grossaci.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "groupeaccedia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "growcredit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -127168,7 +126766,6 @@
     { "name": "kita-bicibici.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klaspas.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klaviskripta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kleenkraftservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kleineserver.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klinikum-oberberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klinlab.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -127357,7 +126954,6 @@
     { "name": "lostgeek.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lottcarey.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loveherass.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lpsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lricountry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lrp-autorecycling.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lskgreengroup.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -127680,7 +127276,6 @@
     { "name": "navyfederal.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nawasyo.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nci.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ncionline.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neilcaruana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neilyanto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nekb.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -127978,7 +127573,6 @@
     { "name": "plumage.so", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plurr.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pm.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pmgroup-global.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pocketoption.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pocopizza.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pocztex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128168,7 +127762,6 @@
     { "name": "rakor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rakweb.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ralphdeal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rammin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "random-numbers.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "random-password.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rany.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128328,7 +127921,6 @@
     { "name": "santswebdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sarah-huenten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sarahsommer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sarkaridomain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sasthyaseba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "satya-insights.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sau.cy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128387,7 +127979,6 @@
     { "name": "securitydelta.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "securitytalent.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seekicon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "seerist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seerr.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seg-tox.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seil.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128719,7 +128310,6 @@
     { "name": "taviskaron.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taxivip24h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcgc-adms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tcn.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tddaij.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "te9.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teagardenspa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128753,7 +128343,6 @@
     { "name": "testscorpiogroup.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tetam.dynv6.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teuto.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tezfab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "the-nose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thealphaconnection.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thebarrens.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129116,7 +128705,6 @@
     { "name": "windows101tricks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wingpictures.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wings.tours", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wipers-nz.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wiseclinictc.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wiserpost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wissen.center", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129291,7 +128879,6 @@
     { "name": "adasiacorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adney.land", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adphotography.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "advaya.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advertizer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aegisys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afbct.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129314,7 +128901,6 @@
     { "name": "alesraa-academy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexkoala.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alhothary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alicejewelry.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alikorooki.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alinemello.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alkesznevelde.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129369,7 +128955,6 @@
     { "name": "awena.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awesomeperfumes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "axfr.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "axomatic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "axomatic.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ayrom.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "b2c-engineering.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129628,7 +129213,6 @@
     { "name": "dallatur.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danibooks.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danielnaaman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dante.ms", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dash.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "datacenterunited.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "datadefendersforum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129744,7 +129328,6 @@
     { "name": "emtreview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "en-pc.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enago.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "encirca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "englishvip.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "enjoyangels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "entretien-vmc-professionnel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129898,7 +129481,6 @@
     { "name": "grow100.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grupoalv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grupoimb.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "grupposanmarco.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gruvan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grzelka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guangri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130021,7 +129603,6 @@
     { "name": "induoloog.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infoparamigrantes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ingolfsskali.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "inia.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inkedin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inmini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "innerhtml.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130084,7 +129665,6 @@
     { "name": "kaimi.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kalimba-hangszerbolt.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kallosmedicalaesthetics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kandycoated.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karenofarcola.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karudomizile.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kengcoder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130480,14 +130060,12 @@
     { "name": "progressivenewz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projectmetrics.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projetofinancas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "prontt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pscosigngroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "psoppc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pspepper.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pspshare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pstool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "psyelena.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ptco.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puppyirl.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pupsic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puravidaeamor.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130798,7 +130376,6 @@
     { "name": "trafficjunky.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelsinfozone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelsure.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "traviscountyappliancerepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trctaborda.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trehand.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trekkerterreur.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130869,7 +130446,6 @@
     { "name": "vetuni.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vfu.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viaweb.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "victorcatalin.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vinylbro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vision.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visionagrupo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130991,7 +130567,6 @@
     { "name": "yurissimo.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yurissimo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yurissimo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yuzicare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ywambaguio.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ywambutuan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yx-express.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131190,10 +130765,8 @@
     { "name": "bebe4d.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beebom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "belezna.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bellasuperfisky.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "belzhd.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "belzhd.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "berget.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bert-hein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "berthouvan.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bestrshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131248,7 +130821,6 @@
     { "name": "bubra.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "budgetapp.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "budra.date", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "buildamericaluxuryhomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bulgarcom.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bullis.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "buuba.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131464,7 +131036,6 @@
     { "name": "dirigeantbtp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dirtyplumberreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dishakiran.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "divinemagazine.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmarcsentry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmoz.v.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dnaplaincity.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131666,7 +131237,6 @@
     { "name": "germanyquality.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geshang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getcancer.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "getsmartcue.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getvantage.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ghui.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giacomomaniaci.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131763,7 +131333,6 @@
     { "name": "holmr.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homebush.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homefromhomecornwall.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "homeproroofing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hooliapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoopernewton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "horizon.ne.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132021,11 +131590,9 @@
     { "name": "margarethouse.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marijuanafarms.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mariuszholowieniec.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "markoheijnen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marquee.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "marvin.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maschen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "masjidalnoorwairarapa.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "massage360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "masterly.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "masterpro.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132298,7 +131865,6 @@
     { "name": "puzzlage.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puzzlage.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pxboom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qifei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qinde.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qingran.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qinshen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132568,7 +132134,6 @@
     { "name": "tabbo.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tajabzar.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tamahurt.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tanorder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tasirrigation.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tauntonme.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taurus-exports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132593,7 +132158,6 @@
     { "name": "thebookishhistorian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thebritishtapestrygroup.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thecascadetravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thecreditpros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thedealerapp.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theertcexperts.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theframeryandgallery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133020,7 +132584,6 @@
     { "name": "app-novusportal-uat-ae.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apparo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appside.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aqua-oxygene.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aracelissanchez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arasikackm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arcticnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133069,9 +132632,7 @@
     { "name": "batamtoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bbence.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bdsmsextoy.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beacon.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beautiqline.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beautyaesthetics.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beautyiconnyc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beeming.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beerstap.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133425,7 +132986,6 @@
     { "name": "gaotong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garagedoorrepairs-sanantonio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gasketech.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gatot.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gaylaktika.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gdhd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133885,7 +133445,6 @@
     { "name": "night-life.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nimver.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nintendodsgames.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nishinija.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "njj0121.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nlx.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nonqmloans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133913,7 +133472,6 @@
     { "name": "onlinetravel.deals", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ontimeemergencyroadsideandbatteryservice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opramachine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "opsholders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "optone.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orangeshark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oregoncouples.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134055,7 +133613,6 @@
     { "name": "reparacoesnolar.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "represa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reservaelcortijosuitehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "responsive.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reverseaging.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reviewtrendingproducts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rewolucja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134419,7 +133976,6 @@
     { "name": "webzvit.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wedesigneg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wedos.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "weekly-app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weempoweryou.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weibel.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weispfenning.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134650,7 +134206,6 @@
     { "name": "bataindustrials.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "batteriesplusbusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bccst.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bdbpayroll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bdsm-erotik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bealest.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beats-universe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134973,7 +134528,6 @@
     { "name": "fortressinc.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortstocktonpecosroadhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forumpsicoanaliticbarcelona.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fotostudio87.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francescosorrentino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "franchisechain.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frankiearts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135004,14 +134558,12 @@
     { "name": "geniusfix.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "genoptimed.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geodecoder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "geoplatform.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "georgeh005.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "georgie.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gesolarinverter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getcalc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getnetworkvisibility.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getsprout.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ghosthunting.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gilloteaux.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ginestasolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "giovannipiscicelli.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135131,7 +134683,6 @@
     { "name": "interbulit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "interiordesignhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intermediazionerifiuti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "internetzonei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inthetrees.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ipa-us.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ironleaf.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135338,7 +134889,6 @@
     { "name": "modern-metal-solutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mofospremium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mofosreel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mojogaragedoors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "momentlocacoes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mooijwerk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "morcillaencaldera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135907,7 +135457,6 @@
     { "name": "wdcnet.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webline.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webmad.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "weimeicleaning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weizhi1111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wellnesstravelhub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wellsofbeauty.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136002,7 +135551,6 @@
     { "name": "ai-kyousei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aicontent.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aikido.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aiwoz.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ajka-solution.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "akaiclinic-yokohama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "akdenizecza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136135,7 +135683,6 @@
     { "name": "chrischambersphotography.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christinadooleyphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chrizz.ddnss.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "chuan.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chuou-labo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ciallo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cibran.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136145,7 +135692,6 @@
     { "name": "classicpraga.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "classicprague.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "classicprague.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "claudiamatiello.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clgp.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clifford-hospital.org.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clinicadeesteticaembh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136551,7 +136097,6 @@
     { "name": "littlenamehub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "livibank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ln-s.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "loco-creations.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "logicstudio.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "logicstudio.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lolyoureallyscannedthisqrcodegeniusthatssketchy.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136675,8 +136220,6 @@
     { "name": "nniai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nntb.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "no-bigtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nobigtech.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nofuss.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noirpvp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nojiri-dental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nootropicsforbrainhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136688,7 +136231,6 @@
     { "name": "nuffieldtrust.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "numerated.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nusantararom.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nusapulsa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nysis.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nysis.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nysis.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137081,7 +136623,6 @@
     { "name": "velvpay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "velyn.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "versantsdaime.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "verschwundenerboehmerwald.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viaferratacauterets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "victoriacarter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "victory-design.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137597,7 +137138,6 @@
     { "name": "drillworx.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drpatyuen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dsigroup.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dubaimegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dusara.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dylantjames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "e-mutation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137632,7 +137172,6 @@
     { "name": "entreprise-ravalement-facade.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "envanature.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epiclock.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "epochconcepts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "erkkiai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "erlandsen.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138084,7 +137623,6 @@
     { "name": "menegaro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mentaflex.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "menukart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "menzzo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mercadoorganico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "merciahandyman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mestriga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138120,7 +137658,6 @@
     { "name": "mistressofthehouseofbooks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mistrvyvoje.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mitsannapolis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mittvarsel.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlle-margot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlle-margot.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mllemargot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138165,7 +137702,6 @@
     { "name": "nationaldebtcounsellors.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nationalracingnetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nefi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nekomimi.cafe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nekonekowo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nemoarms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "netgazeti.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138230,7 +137766,6 @@
     { "name": "onboardweb.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oncall.health", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "one1xfarsi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "onic.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onlyso.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openseo.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oralchirurgie-phoenix.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138316,7 +137851,6 @@
     { "name": "proautoconsultant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "procom-automation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "programar.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "proheadshots.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promaster.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promptbazar.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promptwars.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138587,7 +138121,6 @@
     { "name": "swngrs.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "swtp-p-appsrv-coordination-platform-businessservices1.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sympatent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "synthpop.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "systec.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "system-noah.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "systronlabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138595,11 +138128,7 @@
     { "name": "t-shock.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "t0bi.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "t4gsports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tagon8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tagon8.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tagon8.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tagon8inc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tagon8inc.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "takada418.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "talkapp.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tamarpsychotherapy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138665,7 +138194,6 @@
     { "name": "tor.guide", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toricho-ganka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torontoheights.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "torrentelectricals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torrentinvestments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tourpitch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toyopartespanama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138919,7 +138447,6 @@
     { "name": "bluemax49ers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluetenfraeulein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boehs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "boothersandco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boutique-opinioes.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "breakingbreadwiththebryants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bregner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138940,7 +138467,6 @@
     { "name": "cirugiaplasticasanluis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "civicdigest.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clackyfest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "classifylanka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clicknbook.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clozd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmsfs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139052,7 +138578,6 @@
     { "name": "homewoodpathfinder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hooli1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hsys.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hw.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icast.events", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "idute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iguacumaquinas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139112,7 +138637,6 @@
     { "name": "liebscher-bracht-kassel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "linahuang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "logicalis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lugvonsiga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m.wtf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m4rkos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "macalha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139147,7 +138671,6 @@
     { "name": "myluckysock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysmilefinance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysoft.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mytechwarellc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nachtvertraut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nanodgx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "napalha.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139187,7 +138710,6 @@
     { "name": "ospoalliance.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oswmlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pamba.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "paradymecompanies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "partyrehabb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paulbolton.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pedersenandpartners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139294,7 +138816,6 @@
     { "name": "sopenamobilhome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sparumzuege.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "spaworldhouston.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "specialmomentvideo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "spicestore.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sprovoost.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "srande.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139350,7 +138871,6 @@
     { "name": "titaniumphysique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tonetempo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topbrokers.africa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "torch.security", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toxicflags.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tracbelagro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trapezegroup.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139374,7 +138894,6 @@
     { "name": "vanyavpn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "venezaequipamentos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verloskundigcentrumraak.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "versatilestructures.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vhv2020.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "villacom.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viralytydne.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139506,7 +139025,6 @@
     { "name": "backdigit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bain-savon.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "balfourbeattytraining.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "baltijaam.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bancoatlantida.com.ni", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bateriaprofesional.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "battletrades.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139565,7 +139083,6 @@
     { "name": "bluehouse-odda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluerainroofing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bmgc.edu.bd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bodyconcept-kfz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boenderoutdoor.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolezni.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bombshelled.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139604,7 +139121,6 @@
     { "name": "cardlysa.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "career.how", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "careerstart.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "careskillsacademy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cartazodiacal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casadelsole.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caspe.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139688,7 +139204,6 @@
     { "name": "css-clamp-generator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ctmportal.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ctpa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cuadrosblangar.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cukrzyca.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "customtshirtrequest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cwg.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139854,7 +139369,6 @@
     { "name": "freestyle.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freshsnap.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "friesland-stern.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frokentech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frontiermovinghtx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ftoffice.serveexchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "furries.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140050,7 +139564,6 @@
     { "name": "kotapay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "krankheiten.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kreativbox.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kubiaktr.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kvxr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kyrknatet.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lab-ratz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140116,7 +139629,6 @@
     { "name": "marcoduenki.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "margus.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mariogasparini.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "massana.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matchory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matematikyoldasi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maternalwellness.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140158,7 +139670,6 @@
     { "name": "monterreygroup.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "montevista.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moolimusic.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mope-blog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "motivemm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "motorwatcher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "movahoteis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140266,7 +139777,6 @@
     { "name": "pekarnasazava.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pekarskarodina.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pekarskis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pemo.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petermarshall.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petermclarenartist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pfr.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140325,7 +139835,6 @@
     { "name": "razawitv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rbw-tech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "realizarse-japan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "realliance.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rebabusiprojects.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "recommendatron.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "redpandamap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140604,8 +140113,6 @@
     { "name": "uniodontopocos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unionalcoyana.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unionalcoyana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unitedinternationalschool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unitedpucollege.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urlr.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "us.edu.kg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usacontainerllc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140668,8 +140175,6 @@
     { "name": "wp.pub", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpallstars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wytworniatresci.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wzdh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wzdh.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "x52.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xdlab.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xfilesultimate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140939,7 +140444,6 @@
     { "name": "classygaga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "claudios-pizzaservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clazzor.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "clean4me-us.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clevemedsleepview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clinicabelve.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cliveptr.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141129,7 +140633,6 @@
     { "name": "geektown.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "generali.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "geometryenjoychallenge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "giomi.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gltjp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "go5.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gold.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141145,7 +140648,6 @@
     { "name": "griffnet.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grove-e-move.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grpmail.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gtarestoration.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guidanceetbienetre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gutowski-maler.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gwerder.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141633,7 +141135,6 @@
     { "name": "rentsync.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "republicchophouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rescueyourrestaurant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "restorebodybalance.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "retroworldshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rewire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rextie.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141671,7 +141172,6 @@
     { "name": "sarah-jones.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sasakidental.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sasongko.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "satelitnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "satuenergy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saugatuckcabin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saugatuckvacationhomerental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141767,7 +141267,6 @@
     { "name": "takenouchi-perio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "takiguchi-shika1515.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "talk-local.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tapirs.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taxborn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tdos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teamtriangle.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141886,7 +141385,6 @@
     { "name": "vr-immo-invest.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vr-immoinvest.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vr-re-bank.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vrbq.qld.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "w88link.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wapatui.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "warsawtravelers.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142193,7 +141691,6 @@
     { "name": "carl-sinclair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carorchestra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carpetcleanerreviewshq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "carwrapsinfo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casebydemani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catalogobata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cavapoos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142231,7 +141728,6 @@
     { "name": "clubpublic.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clubtravalet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cm-lagos.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cm-pu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmcper.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cmogus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codechum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142361,8 +141857,6 @@
     { "name": "echonautique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eci-research.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eckersondesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecmx.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecomsight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "economicnewsbrasil.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "economizaplay.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eda-az.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142411,7 +141905,6 @@
     { "name": "fabricacultural.org.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faetasia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fakepology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fathers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "figma-gov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fines.vic.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142488,7 +141981,6 @@
     { "name": "gradyhunt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grana.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandiegames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "grandkidsmatter.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandx86.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greatdayinamerica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greatwaterfilters.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142806,10 +142298,8 @@
     { "name": "minigoldendoodle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "minilabradoodlepuppies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "minnesotatitlesearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mirandacarvalholeiloes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mississippititlesearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "missourititlesearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mk83.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlcounsel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlyny-nitra.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mocanu.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142897,7 +142387,6 @@
     { "name": "okdisasterhelp.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oke.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "okmzt.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oldsoul.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olimp04.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olive.dental", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olivehealth.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142917,7 +142406,6 @@
     { "name": "opusraid.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oregontitlesearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "organizewithmarie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oricinternational.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otsbodywork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otzyvy.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourhousepm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142995,7 +142483,6 @@
     { "name": "pregosa.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prelogica.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "premiumresidency.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pretimmobilier.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pretiumfarm.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prewin.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "primecredit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143022,7 +142509,6 @@
     { "name": "ptmodularleisure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ptr.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ptta.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pundeez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pup.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puppyporch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pupsportal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143239,7 +142725,6 @@
     { "name": "ticoartisan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiertreff24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timetofly.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tinteymas.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tipmast.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tipshub.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "titlesearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143280,11 +142765,9 @@
     { "name": "tysseminilager.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ucmultrasonics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ucmultrasuoni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ucsooregon.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uggonlinestoreofficialol.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ulog.ba", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "umbraco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "uniformcomponents.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uniglobalintijaya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unionares.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unlimit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143521,7 +143004,6 @@
     { "name": "abenberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abettercreditunion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abhandshake.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abilitylinks.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abinandanainfra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abion-bg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abmleadershipalliance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143605,7 +143087,6 @@
     { "name": "admeweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "admin-smolensk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "admiralcloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "adp.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adrcoforegon.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adria.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adrianjamesnutrition.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143633,7 +143114,6 @@
     { "name": "aern.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aerojet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aeroportlimoges.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aeroportsdeparis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aerospaceglobalforum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aesm.limited", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aessonline.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143658,10 +143138,8 @@
     { "name": "afterinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "afuzion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agduc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agence-france-electricite.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agendaedu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agendatrad.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agilexbiolabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agoa.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agoodson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143684,7 +143162,6 @@
     { "name": "aihello.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aihelp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aijobs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aime.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aimforclimate.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aimixgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aimplas.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143813,7 +143290,6 @@
     { "name": "almorinda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "almosallamy.consulting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "almworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alnaharnews.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alobees.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alohapacific.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alorimusic.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143955,7 +143431,6 @@
     { "name": "anybodylistening.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anzappl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aok.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aomeikey.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aomz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aovup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apaleo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144004,7 +143479,6 @@
     { "name": "arab-drama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arab-drama.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arab-dream.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "arab-dream.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arabfcn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aradex.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arafatx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144040,7 +143514,6 @@
     { "name": "arkin.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "armakuni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "armemberplugin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "armsteadproject.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "army-technology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arn0.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144081,7 +143554,6 @@
     { "name": "asharqbusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ashesdiamonds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ashfordtownhall.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ashikagroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ashton.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asiahilux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asianlifestyledesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144439,7 +143911,6 @@
     { "name": "bethkery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bethlehemnj.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "betriebsrat-ivb.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "betterandbetter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "betterify.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "betterme.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "betterworldproducts.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144511,7 +143982,6 @@
     { "name": "bioethicsanddisability.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biofabio.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biofeedbackcalifornia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "biofourmis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biofuels-news.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biogeosciences-discuss.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biogeosciences.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144544,7 +144014,6 @@
     { "name": "bizvibe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bjoernblessin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bk-installatietechniek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bkdgo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bkdr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bkoradio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bkpictures.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144689,7 +144158,6 @@
     { "name": "bouma.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boundary.london", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boundindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "boutique-box-internet.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boutiquecarerecovery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bouwklikshop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bouwklikweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145015,7 +144483,6 @@
     { "name": "cazenovecapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cba.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbc-network.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cbcexeter.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbhf.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbmconnect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cccadvocate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145233,7 +144700,6 @@
     { "name": "clim-past.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "climarte.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "climate-film.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "climatebrick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "climatechangedmit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "climatesafepensions.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clinea.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145285,7 +144751,6 @@
     { "name": "codecentric.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codecnetworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codecs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "codekitchen.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codeocean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codeseek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codesync.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145703,7 +145168,6 @@
     { "name": "dcdrights.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dcearlychildhood.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dcm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dcmedical.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dcseu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dctransparency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ddai.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145739,7 +145203,6 @@
     { "name": "defactofit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defaults-write.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defenseorchestrator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "defenseromania.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defensivedriving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defispot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "defyner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145787,7 +145250,6 @@
     { "name": "dermacare.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dert.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dertouristik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "desede.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deseks.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "designacademy.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "designerrs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145980,7 +145442,6 @@
     { "name": "doukhobor.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "downloadmorestorage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "downtowndoverpartnership.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "downtownontario.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doxford-engine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doxradio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doxradio.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146050,7 +145511,6 @@
     { "name": "dwavgs888.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dwqr.scot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dyln.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dynalogix.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dynarex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dysnomia.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dz-hip.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146267,10 +145727,8 @@
     { "name": "electronicshelpcare.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "electrum-mona.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elefantcms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "elegantseagulls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elejido.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elekta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "elektrotechnik-schwab.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elemmental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elemy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eleneshome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146421,7 +145879,6 @@
     { "name": "episource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epnuffic.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epobocka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "epoqueevolution.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epressrelease.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eprisephoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "epsilon.photography", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146489,7 +145946,6 @@
     { "name": "euphoriareign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eupl.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eurapp.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eurekka.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eurobahn.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "euromat.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eurometal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146753,7 +146209,6 @@
     { "name": "flickerleap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flightdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flipacoinonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "flockler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "floppy.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "florencehc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "floriane-even.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146811,7 +146266,6 @@
     { "name": "formstack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "formularapida.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "formulatedby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fornex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forrest79.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forro.london", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forteprenestino.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146972,7 +146426,6 @@
     { "name": "galileonet.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gammagroup.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gandhiashramsabarmati.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gandour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ganoderma4in1coffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gansevoorthotelgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gantlaborde.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147146,7 +146599,6 @@
     { "name": "gks-bildung.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glaminati.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glasengel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "glassboxtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glasswall.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glattbach.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147172,7 +146624,6 @@
     { "name": "gloverscast.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gluek.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glyphobet.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "glyptoteket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmmb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gnacsports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147186,7 +146637,6 @@
     { "name": "goalswizard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goarsmarket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gobeyond.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gobo.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gobsn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gocar.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147353,7 +146803,6 @@
     { "name": "gupy.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gurmat.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gushi.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gutex.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gutterjunkies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gutzfit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gvn.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147367,7 +146816,6 @@
     { "name": "gymedin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gymless.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "h2oinnovation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "h4bchelsea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "habana.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "habibbank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hacialahuelgafeminista.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147766,7 +147214,6 @@
     { "name": "ica.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icade.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icanbecreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "icbc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icbda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icccad.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icdgroup.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147953,7 +147400,6 @@
     { "name": "inquestconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "insbright.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inscape.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "insegment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "insideuniversal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "insightsvt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "insighttv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147975,7 +147421,6 @@
     { "name": "integ.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intellar.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intelligentgo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "intelligentlegalsolutions.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intellisoft.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intenseo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "interactivemedia-foundation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148225,7 +147670,6 @@
     { "name": "johnlecarre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnnyinscatola.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnrdockendorf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "johnschroeder.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnsonsexpress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johntopley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joho.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148312,7 +147756,6 @@
     { "name": "kafshetebi.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kaia-health.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kaiserburg-nuernberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kalankit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kaldi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kalhotkomat.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kaliartistry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148398,7 +147841,6 @@
     { "name": "kettcar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kettleworx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ketv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kevhealy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kevinmcphotograph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kevinwoodphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keytomylime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -148662,7 +148104,6 @@
     { "name": "launchconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laurieshieldsdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lavozdeanza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lawpay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lawtrend.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lawyersnew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lazarev.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149126,7 +148567,6 @@
     { "name": "massivebio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "masstech.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "masterscast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "matc.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matele.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mathux.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matiasbrunacci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149397,7 +148837,6 @@
     { "name": "mkm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlokcleaning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mlq.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mmdriving.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmeaeasterndistrict.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmimicro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmquality.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149438,7 +148877,6 @@
     { "name": "mojizuri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mojizuri.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mokenney.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "molaclothing.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mollyjayne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "momentosfriko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "momentum-tech.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149529,13 +148967,11 @@
     { "name": "msmc.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mtb.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mtex.net.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mtnbikeriders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mtogc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mujeresparalasalud.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mukio.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mukurtu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mula.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mulligangear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "multibanco.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "multicharts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "multihog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149630,7 +149066,6 @@
     { "name": "myramadanmoon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myriadhotel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myriation.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mysimsem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysterytag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysumber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mytaxindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149723,7 +149158,6 @@
     { "name": "ndpta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nealemorison.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nearbees.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nearform.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "necrat.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nedco.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "neelscastillon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149865,7 +149299,6 @@
     { "name": "nitnemsahib.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nitrd.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nitro-tv.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nixny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nizuc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "njmap2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "njoyn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149957,7 +149390,6 @@
     { "name": "ntarasioannis.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ntdse.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nte.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ntma.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ntnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nujek.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nullcon.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150093,7 +149525,6 @@
     { "name": "oneontahighalumni.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oneplanet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onepointtwocapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oneskin.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onesoccer.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onestepgps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onesub.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150267,7 +149698,6 @@
     { "name": "palmaroyale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "palmgrovefarm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "palmknihy.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "palmmedia.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "palmspringsairmuseum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "palumboeditore.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "palyvoice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150305,7 +149735,6 @@
     { "name": "pardiso-project.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parfin.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parhoonshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "parisaeroport.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parisalignedinvestment.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parkandroam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parkaue.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150431,7 +149860,6 @@
     { "name": "petlja.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petnetid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petrapsy.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "petrolicious.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petskb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petsmartcorporate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pewhispanic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150780,7 +150208,6 @@
     { "name": "puertocadiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "puertomalaga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pugscore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pulvajewelry.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pumascan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pumasecurity.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "punchdrunk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150872,7 +150299,6 @@
     { "name": "radio1.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radio7.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radiogra.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "radioj.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radioklara.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radiomonoster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radioplanetario.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150961,7 +150387,6 @@
     { "name": "recode-lang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reconciliatecondios.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reconyx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "recreus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "recycle-it.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "recycleit.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "red-team.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151093,7 +150518,6 @@
     { "name": "riceforafrica.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richardepiggle.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richardrosario.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "richardstengel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richerenches.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richtek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "richter.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151285,7 +150709,6 @@
     { "name": "safeguardproperties.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safeproject.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safespaceresearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "safestbettingsites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safetypay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saffle.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sagegateshead.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151503,7 +150926,6 @@
     { "name": "semboyan35.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "semidotinfotech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "semisupervised.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "semkins.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sempel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sen-uni-lu.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "senadaadzem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151518,7 +150940,6 @@
     { "name": "sentinelone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sentral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sentrysoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "seo.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seoulsummit.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sepadental.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sepio.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151533,7 +150954,6 @@
     { "name": "servier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "servingdumplings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "servipizza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "serviz.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sesamesoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "session.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sestable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151758,7 +151178,6 @@
     { "name": "smartcarleen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartcentsforlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartedupadangpanjang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "smartenspaces.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartlivingmama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartology.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smartpostapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151955,7 +151374,6 @@
     { "name": "squadcoders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sragnar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sreality.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sron.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "srpcleanenergy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "srtr.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ssbcheyenne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152051,7 +151469,6 @@
     { "name": "stimaging.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stirchleybaths.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stiridecluj.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stiridiaspora.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stjameswest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stjohnskids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stjv.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152086,7 +151503,6 @@
     { "name": "strategieliberte.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strategysystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "straykidsjapan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "streamlinecarwash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "streamnetlibrary.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "streamr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "streiche.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152299,7 +151715,6 @@
     { "name": "techjeny.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techjournal.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technikforum-backnang.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "technmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technologies-ebusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technologylawdispatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techpartneralliance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152645,7 +152060,6 @@
     { "name": "thirdlinefp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thiri.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thirstys2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thistle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thistle.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thmarch.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152664,7 +152078,6 @@
     { "name": "thunderclient.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thunderlotusgames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thuprai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thz.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tib.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tic.gal", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ticket-9.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152695,7 +152108,6 @@
     { "name": "timeless-hairstyles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timesdelphic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timetap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "timetravel-vienna.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timogrossenbacher.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "timroes.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tinggly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152756,7 +152168,6 @@
     { "name": "tooltester.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toom-baumarkt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toom.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "toonboom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toowoonbayhp.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "top10usenet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "topangiangaz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152802,12 +152213,10 @@
     { "name": "tpbafk.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tpcases.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tpctrevisobay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tptlive.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tptq-arabic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trackle.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tracymarinophotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradeledger.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tradeorado.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradernet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "traderssec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tradersvillage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -152917,7 +152326,6 @@
     { "name": "tulanehillel.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tulanehullabaloo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tulsahistory.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tuniclick.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tunneymunney.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuportaldelempleado.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turbinehq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -153038,7 +152446,6 @@
     { "name": "unicommerce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unicz.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unilim.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unioncountyweedcontrol.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unionems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unisg.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unisonglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -153278,7 +152685,6 @@
     { "name": "visorando.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visorando.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vistatalmidim.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "visualfabriq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vitacura.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vitechteam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vithas.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -153574,7 +152980,6 @@
     { "name": "winterwind-productions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wirsindderwandel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisconsinacademy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wisdomathena1000.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wise.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisers.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wishtv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -153950,7 +153355,6 @@
     { "name": "agronorte.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahg67.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ahmed.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ai.co.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aibios.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aicano.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aidenisik.scot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154063,7 +153467,6 @@
     { "name": "appiancloud-dynamic.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appiancloud-static.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appiancloud.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "appkc9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "applecommunity.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "appleminded.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apptokens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154143,7 +153546,6 @@
     { "name": "aumc.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aup.edu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aup.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "austickcarremoval.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auto-ecole-du-tursan.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoamericas.show", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoexplore.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154216,7 +153618,6 @@
     { "name": "beachfrontllc.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beaks.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beamdisinfo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beautifulcanvaspaintings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beautystudio-linda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bebra.ag", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bebra.as", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154230,7 +153631,6 @@
     { "name": "bedienungsanleitung-deutsch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bedireg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bedtimereviews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "beebipood.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bees-portal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "belcoda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beleaf.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154367,7 +153767,6 @@
     { "name": "bryansk-news.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bsdcityliving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bsslesin.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bsure.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bsure.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btpritikin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154457,7 +153856,6 @@
     { "name": "cbg-it.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cc.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cc3a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cca.edu.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cccglp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccdcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccgpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154493,7 +153891,6 @@
     { "name": "chernovcy-news.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chevychasetrust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chezfalco.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "chigwelltreeservices.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chinainluxury.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chita-news.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chokesngags.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154531,7 +153928,6 @@
     { "name": "clinicamiromarbella.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clinicasoma.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clonidine.best", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "clothinghunter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clou.tt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clouddownunder.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cloudfleet.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154602,7 +153998,6 @@
     { "name": "corriestmedicalclinic.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cosamcontracting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cosplaysr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "costabike.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "count.town", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "court-colman-manor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "covettrading.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154694,7 +154089,6 @@
     { "name": "damuliene.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danbrookes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daniel-cox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "daniel-ip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danparkercarpentry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "darbgaldi.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "darienboyshockey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -154860,7 +154254,6 @@
     { "name": "donnellymech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "donutchurroworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "donwana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "doon.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doorlifted.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "doorlopendereisverzekering-vergelijken.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dopequickreads.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155184,7 +154577,6 @@
     { "name": "flvs.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fly.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flyingtomorocco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "flyreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fmanuelsg.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "focusetlumiere.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "focusrtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155198,7 +154590,6 @@
     { "name": "forexsignalroom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forexwinway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forlita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fornonardona.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortressgb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fortunafunds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "forumcommunity.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155254,7 +154645,6 @@
     { "name": "gacheamotors.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gahzly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galacticashirts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gam-motos-parts.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gamenetwork.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gameszone.tn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gamingaccessories.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155302,7 +154692,6 @@
     { "name": "getcleanworx.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getkeyport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getment.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "getmojito.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getrealgifts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getroom.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getthink.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155447,7 +154836,6 @@
     { "name": "harperreed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hassana.com.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "havenquilters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hayhurstrealestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "haysfinancialgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hcai.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "healthefoundation.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155457,7 +154845,6 @@
     { "name": "heartofthemidlands.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heda4etak.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hederatech.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "heenshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "heitepriem.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellenichandmade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helmerinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155532,7 +154919,6 @@
     { "name": "hungu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hunterhi.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hustlersuniversityapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hw.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hxcrr.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hxnnxs.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hydrauliikkakauppa.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155547,7 +154933,6 @@
     { "name": "hyultis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hyzure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hzuuuz.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "i110.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i2forensicmasters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i3c6d0s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iamexperts.consulting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155568,7 +154953,6 @@
     { "name": "if-news.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iftta.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ifyou.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "igame.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igc-market.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igtsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iiepeer.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155794,7 +155178,6 @@
     { "name": "karkkainen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karlapepe.lel.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karlhaworth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "karosello.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "karpierz.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kashmirdmc.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kasteelhoensbroek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -155938,7 +155321,6 @@
     { "name": "lawkwk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laxammo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "layx.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lazuardy.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lc-cloud.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lc-home.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lckube.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -156522,7 +155904,6 @@
     { "name": "one-acleaning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "one-pass.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onejustice.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oneleaf.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onestopsafetysolutions.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ong.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oni.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -156533,7 +155914,6 @@
     { "name": "onlinecodechalao.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinefilerepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onlyprootechs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oompf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oooir.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oooo.plus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opalstudio.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -156818,7 +156198,6 @@
     { "name": "qms.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qnanotech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qprcaquatics.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qsecure.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qualidiag.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quanticlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quape.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157217,7 +156596,6 @@
     { "name": "skynotify.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "slavyansk-news.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "slimer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "slimonomics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "slowinver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smaltireraee.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smart-cash.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157340,7 +156718,6 @@
     { "name": "strom-mit-system.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strongcitiesnetwork.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sttheresacatholicschool.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stuartmcbride.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stucki-sanitaer.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studiobrandano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studionerisabatini.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157629,7 +157006,6 @@
     { "name": "ttsvisas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tudonalinha.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuffdall.as", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tugedr.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuinhout-compleet.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tula-health.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tula-news.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157645,7 +157021,6 @@
     { "name": "twinlimousine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "twistedservers.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tycom.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "typewell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tyumen-news.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ubeen.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "udeca.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157726,7 +157101,6 @@
     { "name": "veluno.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "velvetpayments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vendiot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "venecleanus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ventasdeseguridad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ventolininhaler.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ventrata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157782,7 +157156,6 @@
     { "name": "vnbctv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vntyper.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vocalaf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vocalshirts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voda-nadom.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voicimonavis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voidnya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157863,7 +157236,6 @@
     { "name": "vuzopedia.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vybaveni-firem.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "w3docs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "w996.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wackaf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wackyaf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wagener-gmbh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -157951,7 +157323,6 @@
     { "name": "windsorhoteis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winefortune.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "winning.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wipeit.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wiproccs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wirtgen-group.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wisdomacademy.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158014,7 +157385,6 @@
     { "name": "xn--y3cri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xnine.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xode.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xoso66max1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xpertva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xsarius-tv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xsauto.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158126,7 +157496,6 @@
     { "name": "7.ls", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7dots.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7pool.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "7skyco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9ranks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a-kang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abelordbalagtas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158175,7 +157544,6 @@
     { "name": "almazroueigroup.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "along-the-coast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alpinisci.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "altror.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ambros.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amm-ceramics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "analytixen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158191,7 +157559,6 @@
     { "name": "antsiferov.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anyservicemanuals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anzio.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aogas.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aoronyx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apexkk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "api.org.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158292,7 +157659,6 @@
     { "name": "bszpy.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "btbusinesshub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "budsforbuddies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bulkmagic.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bulutimza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bulutimza.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bunyancbi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158405,7 +157771,6 @@
     { "name": "cybernetworkglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "czech-budowa.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dahlberg.cologne", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dailyproductsclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danielfukuda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dargrad.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "data-mirror-72f6ffc87917.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158581,7 +157946,6 @@
     { "name": "goz.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grantpeier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "graphicalsystemsusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "greater.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gttnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gustoclean.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "guzek.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158648,7 +158012,6 @@
     { "name": "humiliate.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i9assessoria.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ibells.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ibharatkhabri.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ibwil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icawds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icejusa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -158769,14 +158132,12 @@
     { "name": "learnwisego-stage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lebanese.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ledhive.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "legrandbus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lekkerkofi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lespetitschiffons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "letsclimact.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "letwork.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "level-assist.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "license4j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lifecoachroel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lifemaintain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lifesciencedynamics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lifestylemanagment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159093,7 +158454,6 @@
     { "name": "saijanmasthan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saintalthegreat.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "saiserve.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "salescircle.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samarc.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sambi.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samplehc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159285,7 +158645,6 @@
     { "name": "ukdri.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ukfinancialplanning.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "umdasch-madosan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "umiksmart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "underconstruction.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uniclejess.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "updating.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159295,7 +158654,6 @@
     { "name": "urbanpursuit.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urlss.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "usadocnetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "uubilng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uwrgarlingtontx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vaamflytt.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "van-rutten.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159613,12 +158971,10 @@
     { "name": "cbg-engadin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbmvn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cci.org.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ccloyaltyclub.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccnda.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cellsys.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "centennialpainters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "centerpilot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "centralimpressos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "centrumvrijwilligerswerkhethogeland.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cfc-stmoritz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cforesources.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159771,7 +159127,6 @@
     { "name": "eatpolkadot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "echameuncable.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecreatorshub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ectinfra.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edalive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edith-thellmann.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "educationfinancenetwork.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159808,7 +159163,6 @@
     { "name": "esy.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "euler.finance", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eventosclick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "everteam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evo-exchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evolutionmuaythai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exvega.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -159896,7 +159250,6 @@
     { "name": "granitebaydermatologyandlaser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gripvol.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "groupe-optimum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "growthbutton.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gt-ps.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "h2breeze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "h4k.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160015,7 +159368,6 @@
     { "name": "ksenoris.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ksteamship.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kwsoos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "l3n.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "labmanager-lis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lackiererei-repx.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lakashirdetes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160234,7 +159586,6 @@
     { "name": "onecore.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oneviewhub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onguard.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "onlinecashloanz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onlineydscenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openbackdoor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openchipplatform.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160352,7 +159703,6 @@
     { "name": "reefpark.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reesefortraviscounty.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "regentchair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "regg.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "removalsandstoragex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "remsi-e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "renaultduster.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160383,7 +159733,6 @@
     { "name": "safetycomply.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samamoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samaraleaders.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "samelectricltd.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samquick.me.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "samuvit.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanodent-focsani.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160444,7 +159793,6 @@
     { "name": "smoothsnap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snail.observer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snakeoil.dedyn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "softcleanr.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sola.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sosysadmin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soundfingers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160573,7 +159921,6 @@
     { "name": "travelchinawith.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelingsavvyseniors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trekbible.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tripyana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "truckslogic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trueimpactsigns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trustedstack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160625,7 +159972,6 @@
     { "name": "wbmonitor.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wbmonitor.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wbpersonalmonitor.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wbpgroup.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weiterbildungsmonitor.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wellnesscoaches.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weltraum.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160690,7 +160036,6 @@
     { "name": "1b.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1bar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1plus1tv.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "22emesiecle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2rings.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2to.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "345404.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -160963,7 +160308,6 @@
     { "name": "cursosbajoprecio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cve-wizard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberbs.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cyberd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberfortress.security", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberlaracom.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberti.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161021,7 +160365,6 @@
     { "name": "dreamconnect.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drobny-app.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dstechnologies.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dstechnologiesinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "duaputra.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dubachinn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "durust.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161044,7 +160387,6 @@
     { "name": "elementarythegame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elfreelancer.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eliteheatgroup.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "embark.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eminencecapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "empresasavenda.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emy.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161140,7 +160482,6 @@
     { "name": "gaelle-esthetique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gamestic.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gaminglog.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gaoice.run", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "garten-kresse.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gassafetymanchester.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gayporn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161872,7 +161213,6 @@
     { "name": "vertinext.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vessurvey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vetexpressmobilevet.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "viajesotur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viaknit.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "viciadasemesmaltes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vietnam-melbet.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -161949,6 +161289,1298 @@
     { "name": "ztt.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuydgroep.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zwalm.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10jahre-govet.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10jahre-govet.international", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1rail.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1tamilyogi.vote", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "45shiki.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "4surfers.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "4your.business", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "7nets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8i8.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aaanya.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aaapurse.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "academicalacrities.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aceenergy.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ach-portal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acme-dns.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acme-dns.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acme-ssl.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acme-ssl.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acquario.genova.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acstallningsmontage.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "adarsh-pandey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "addexpiresheaders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "adeptasiaconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "admin24.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "advancedwcanalytics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "adventurouswomen.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aegis-bot.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aegissec.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aerofestival.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "affittacamere.firenze.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "afiliado.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aflalogasperini.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agenciaalafia.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agroequipos.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ahd-cyber.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ahjindigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "akamslinkphoneqr.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "akamsnetworksetup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ako.gl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "akuluarabadunyasi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "al-etraaf-belmoahlat-fi-almania.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "al-etraaf-fi-almania.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alarmreceiver.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alberosano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alberttalkstech.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aleman-auto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alienpls.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alljobspro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alltracon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "almaghrebsport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "almanyada-denklik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "almanyada-denklik.info.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alphaagency360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alphaeducation.edu.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alpinenursinghome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alrashid-law.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alrowadexchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alsgourmetsausages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alvicom.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amadmission.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amarsolution.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amazoncreatica.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amber-backend-app-826d62a5abda.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "americanreels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amirmarketanzali.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amplify.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "analiespantry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anarchistmedia.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "andesiel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "andrew.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "andydominiquerak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anerkennung-in-deutschland-antragservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anerkennung-in-deutschlandantragsservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anerkennungindeutschlandantragservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anerkennungindeutschlandantragsservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "angelnumbergenerator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aniartacademies.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anthony.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antizanzare.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antragsservice-anerkennung-indeutschland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antragsserviceanerkennungindeutschland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antunes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apcmc.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "api.spa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apostrophe.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apprenticeship-toolbox.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apropoaalst.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arabc.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aranc.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arcos.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arctic-store.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arizeruk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "artlifehome.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arzeshyabi-dar-alman.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "asb-cam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aseelanimalhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "askatechnicalquestion.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "askbrake.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "asyncura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atlanta-airport-parking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atomready.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atomrss.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atribo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atribo.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "audiofanzine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auroregaucher.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausbilden-wir-machen-mit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausbilderplattform.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausbilderplattform.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausbilderportal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausbildungplus.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auslandberatung-ausbildung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auslandberatungausbildung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auslandsberatungausbildung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autoaddz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autocarrot.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autocarrot.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aventurateaviajar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "avilauto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aylanelli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "azubis-ins-ausland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "azubis-ins-ausland.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "azubisinsausland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "azubisinsausland.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "back0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "baic-versicherung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bardoferry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "barongoldsteindesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bauplanmanager.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bdmarketer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beacongaragedoors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "become.education", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "become.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beemdata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "belegstelle-glashuette.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bellylaughliving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "berget.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bertolinoengineering.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "berufszertifikate-und-diplome.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beskar.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bestofbackyard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "betfjord.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "better.ad", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bettertogetherphysiciancoaching.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "betweenbuns.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beyondsoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bfh24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bhrc.wa.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bigelkconstruction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bigmoth.gotdns.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "biofire.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "biohkw.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "biored.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bjksportscentre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "blanchot.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bluehaven.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bluehentai.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bluvacanze.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bold-fabrics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bonificaamianto.lazio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "borisfx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "botschaft.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "boysontech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bpx.exchange", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bpx.global", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "brainwaveboost.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "breezly.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bricmon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bridge.casa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "brief.law", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "britishvillage.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "brocanteur-debarras-paris.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bsfamily.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bskmt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "businesswise.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.haus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.memorial", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buswell.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buyganodermacoffeeonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buzzkill.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "caelandrayer.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cakebreadsnowgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "calderacyber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "calivillalonga.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "calorioapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cameraforensics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cancelli.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "canny.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "capitalcitycatfish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "capsugel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "captcha.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "caraudioworx.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "carinacodes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cartenova.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casanovamilano.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "caseright.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "caseright.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casesandclues.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casewareanalytics.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casino-poker-tour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casinodebeaulieu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casinodecavalaire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casinotop1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "catalogosdemujer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cdsc.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centella.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centrovenetoservizi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centurion.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cg-srv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cg-srv.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chanska.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chapters-eg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chariot.works", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chat-insel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chingjyu.cyou", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chipdesign-germany.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chitownblackcars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "choptheknife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "christchurcharmley.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chullostravelperu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ciecompraenlinea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cistic.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ckp.eg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clash.taipei", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "classificazionerifiuti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clearwaymind.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "climatizzazione.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "climbingmounttoubkal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clinicadentalramoscatalina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cloudaware.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clu.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cmo.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cmtk.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coachemocionalmentesaludable.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coastwideweb.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cocktail-express.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "code-beacon.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codeactive.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codeactive.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codexlog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codinggirl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codinggirl.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codybrunner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cognitive-enhancers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coisapet.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "collateralloanshawaii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "college-sewing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "collierlittler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "comp-consultants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "compostodesucesso.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "comprarlomejor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "compumasapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "conapdis.go.cr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "concellodeortigueira.gal", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "connactz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "countdowntomagic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cpsnap.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crackstreams.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "craftycove.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cre-pf.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crea3dsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crewtaskglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crimeid.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crispregional.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crj.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "croissancelocal.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "croydondrive.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crushedice.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cryptogaming.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cssrstransports.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ctrlalto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cubotic.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "curisdigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "curriculumciudadano.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cursosdepestanas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cut.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cutegifmaker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cworkflow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cwtv.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cwtv.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyabra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cybelesoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyber.irish", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyberinfraarmor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyberproud-deli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyberproud.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cygenx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cyp.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d3drone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "daikoz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "daikoz.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "danielberanek.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "danielle-picchetti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dark-manga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "datadus.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "datenkrake.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "davidzelenka.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "davtyan.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dawi.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dbkc.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "decis.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "decis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "deletecat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "delv.ac", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "demg-investors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "demolire.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "denniksport.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dennstoree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "deondernemer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "derball.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "designceramika.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "deunopostenacional.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "devopsfreelance.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dfsk-versicherung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dialogic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digifun.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digireg.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digistore.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digitalaplus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digiwedoo.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dila.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "diobrasperu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "discoverx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "discuss.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "disobey.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dissention.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dobremedia.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dobrenoviny.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dobreradio.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "doctorsatdoor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "doctosofi.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dondonya.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "doorlinkplus.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dovodlaw.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dpid.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dreherit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "driveo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drmaniplastics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drtrupiano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dukemaps.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dumpsternationfl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "duschkabine-shop24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dutchdevelapp.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "e-biofire.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "earlyyearsaward.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ecemi-alu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "echoesin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ecopond.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "edboothandassociates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "edgex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "educationcluster.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "edvberger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eheberg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eheringe-shop24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "einvworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elblogdeldinero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eldin.ba", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eldinturkic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elhombreinvierno.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "emailassist.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "embassyindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "empowerhealpt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "encentfit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "enduro-center.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "energiaelcorteingles.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "enggrup.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "englandgenealogy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "enjoys.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "enorness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ententaxi.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eprice.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "equalityhealthcareservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ergosg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "escortify.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "estheclinic.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "euroindia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eventoopartyrooms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "everestplus.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ewarranty.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ewigkeit.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "exoatlas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "exosys.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "experts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "expobusiness.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eyaqueen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ezmedix.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "facil.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fakecrime.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "falcony.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "famenneartmuseum.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "familyace.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fashionette.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ffazeshift.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fido.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fieldgroupny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "figma.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "files4share.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "findmeapp.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "firenneon.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "firmamaja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "firsattilkisi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fitnutkatie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fitssey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flagstri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flamellugano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flamingo-shop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flearfarmcottages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "floatsys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flrs.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "foodgenieai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "formap.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "formulados.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fouadvollmergut.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fractallatcarf.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "framenails.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "framotec.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "frank-vincent.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "freightscore.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fruitware.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fsaddons.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fujivibe.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "functionalmedicinetraining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "furrerhugi.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fusioncx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fuzoku-h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fvledilizia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "g9kingnine.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ga4wp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gafisa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "galacticmedallion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "game.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gameapps.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gamers4funchannel.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gandioli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ganodermacoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gdwtowbars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "geasrl.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "geeks.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "geitex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "genyo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "geohunt-tokyo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "germanpest.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "geruestbau-grupp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "get2career.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gilribeirofit.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ginesenergy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "glascentro-gmbh.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "glascentro.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "glastuershop24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "global-inwest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "globalservice-am.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goldenfashion.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gonlinesites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goodydoggy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grampage.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grandhoteltynemouth.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gravat.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "graydaze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "greymouthkiwi.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grupodesbrave.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grupokls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gsrank.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gta.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gta.vi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gtrtc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "guardiancappartners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gurusewa.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gymnertia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gz999.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "h2.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "h2o-securities.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "haaglandenglas.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "habitationsfontaine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hackersgurukul.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hadan-it.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hamzahlabs.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hanakat.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handler.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handler.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handlerparts.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "handmadebyblueberry.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hanimazhar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "happennino.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "happy5thwheelers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hardtodo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hasankayra04.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hayalhanephotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hblbb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "headpats.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthvitalzone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthwaymedicalnetwork.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthyeatingbenefits.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heartcodelabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heatwrap.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heike-koltermann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heliguy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hellonest.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpguru.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "henrimalhas.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hensiek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heos.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hermaj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hiattlawaz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hicopy.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "highmans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "highskillacademy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "historictoxaway.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "holanuevayork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homelykw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homepage.help", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homewoodworkplans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "honess-water.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hoppy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "horizon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hostoro.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "housecleanerslongmont.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hoyabit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hpthealing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hrcp.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hugheshandymanservices.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hungphatlaptop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hyperfuse.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hyperfuze.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iadschool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "idaz09.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "idh.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ignca.gov.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ilpuntomagazine.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "imboxing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "imkerei-bad-oldesloe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "imtqy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incenfit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incentafit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incentbit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incentefit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incentfit.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incentifit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incntfit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "indihomeofficial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "indushospital.org.pk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infinitewealth.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infobellit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infyz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "initializeai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inmigracionjusta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inovarmetaisonline.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inovigo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inphima.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inspiresandinnovate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "io-markets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iotrasloco.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ipadresse.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ippudo.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "irian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "irissoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ironwoodlabs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "irstaxforumonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "is-fund.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "isolation-thermique-exterieur.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "it-support-schmid.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itbfrance.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itechhacks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itpeox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itreply.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itsmeit.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ivaniglesias.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jcbank.com.jo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jcx.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jenkins.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jevremovic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jfkvirtual.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jinspace.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jitkamahdalova.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jmbaxico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jmbaximarineservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "joblyconnect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "joeysslimeventure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "johnnyrelease.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jokinglybad.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jomslot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jordanjherrera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jptv4.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "junkcarremovalbrampton.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jusdocs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "k.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "k8ja.co.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kalendar.com.hr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kamataworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kapakinig.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "karpatinfo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kasc.finance", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaushikparui.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kbobath.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kdm.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "keepcoolnewmom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kemppi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kendo-ueda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "keyandswirl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "khobor.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kidsweek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kinegun.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kingswinehaus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kkpig.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "klinikpsikologonuraydin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "klinkens.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "knovos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "knugen.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "koinpark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kojast.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "komi.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "koparrestaurant.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kovroedov.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kraflix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "krizovkarik.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "krrt.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kupisafe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kuroedov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kurrabagroup.exposed", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lab-test.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "laget.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "laisvesknygos.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lapeyre.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lasvegas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lasvegas.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lasvegas.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lasvegashotels.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lauruslabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lecolehk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "leleviagens.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lens-soma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "letourneaudistributeur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "levinholidaypark.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lhero.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lhfund.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "librerose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "licitor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lifecelebrated.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lihatvirtual.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lineinchina.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "liobet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lipetral.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lisansall.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "liso.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "litebattre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "liuyan.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "loanservicing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "localenv.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "localhero.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "loeilducontinent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "loganj.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lonely-mountain.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "longlanepasture.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lothiandomestics.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "love-damono.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lrnewenergy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lucafrancesca.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lulasaga.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lulu960.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "luminabh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lymecraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lynki.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "m-partners.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "m-r-team.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mabex-cybercore.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mabexcybercore.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "macs4seniors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "magiccardbuyer.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mainlandapp.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maisciencianaescolams.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "majk.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "manualdousuario.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "margaritamun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marienolandmd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mariokartworld.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marujapiruja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marx.pp.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marxists.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marxists.sbs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mauiadventuretourskayakco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mave.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mavericklive.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mawrid.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maxilife.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mayfairlimo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mazudh.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mazudh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mazudh.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mazudh.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mbmbuild.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mcar5b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mcr.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mdigital.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meandliora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meapp.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mecafresa.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "medcheck.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "medicalrules.servebeer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "medizinstudium24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meedia.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meengan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meezjewelry.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mehdiqurancenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mehllegal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mei-xin.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meizitu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mejoresencuestas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mejorlaptop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "menelaostore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meplusliora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "merisratings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "merzougaonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "metamarkettrade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mhmchauffeurs.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mhp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mielkan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mihanroid.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mijnstembureau-lelystad.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mijnstembureau-meppel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "miltonbaby.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "miltonbaby.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "miltonbaby.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "minasverde.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "minigameuniverse.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "misinforpedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mitfreespeech.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mixxie.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mlotfycarrental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mmanea.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mnbwnetrza.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mo-sick.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moalboaladventures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moneysmart.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moreclarity.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mostamaracademy.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "motabilityoperationsrecruitment.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "motorcityalignment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "motoreflex.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mrmeticulous.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mslinkpc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mslinkphoneqr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "munisiacs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mustdonewzealand.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mxlink.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mxradar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mybetterlife.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mybzz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mygoalguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "myitero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mykad.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mymoranguito.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "myschoolelection.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2023.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2024.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2025.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2026.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2027.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2028.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2029.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2030.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2031.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2032.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mz2033.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mzakariya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mzcdn.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mzdy.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mzdy.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mzly.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "n-ag.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nabthat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nachhaltige-anleger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nachnamen.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nagaya.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nagorik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "najada.games", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "naohasa.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "navoice.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "navoice.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nbri.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nederlandseloterij.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "neuropsiperches.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newflyer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newstoter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newtrendsbykate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyork.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkattractionpasses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkcity.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkcity.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkcity.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkcity.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newyorkcity.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nextdyna.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nextgen-mw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nfclegal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nfo.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nirinarabeson.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nirvati.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nmhincorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nmshippingshield.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nofraud-test.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "noldor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nomadgrowth.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nona.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nordkampen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nordkampen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "novinvisa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "novoshoes.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "novus365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nowysacz.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nuevayork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nuevayork.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "numericolor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nuuls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nyb.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nylonova.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "o-o.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "o00o.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oasishealth.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oberpfalzverein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oblat.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ocadefusion.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "odosermou.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oh64.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oldskoolanthemz.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oldskooltunes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "olekotenizavivki.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "olennolla.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "olerth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oltayagelme.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "omgdevil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "omgidol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "onecloud.nsupdate.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oneinternetamerica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ontreams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "optrust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "orap.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "orbaden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oro97.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "osiriz.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "osnovazabor.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oudersvannu.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ozat-tools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "p.lease", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pablodominio.sbs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pablogracia.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pactnetwork.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pagodil.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pagoonline.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "paigetan.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "palermo-plovdiv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "palngdev.wpenginepowered.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pangge.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "panhandlefloridatlhkce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "parametricaeng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "peaktribe.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pemangkin.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "perlei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "personaltransporter.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "personnalisathion.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pested.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "petbr.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "phol.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pierrot-bg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pile.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pixelbattle.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "planepost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "platord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pokemoncentral.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pondsec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "poohcottage.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "popstockapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "portall.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "portcullisco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "postermaniacs.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "postkassetrimmen.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "powerembedded.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "powertuning.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ppcpump.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prairietechsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "premier-mt.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "premiumsleepingbags.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prenataldnatesting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prendsendelagraine.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prettynightjob.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prevascloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prevencia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "preview.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "priczone.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "princeruperthotel.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "problemlos-privat-versichert.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prodcdn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "produttori.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "projectfriends.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "proofby.ac", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prudentialzenith.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "psychedelia.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "puppiza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "puroprazer.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qibgroup.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qozido.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qq-p.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qstpcj25427.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quai.ly", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quantumdynamics.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quanyin.edu.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qubit.capital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "queryguard.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quinnappliances.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "racketlonindia.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ragingbearinteractive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rampal.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rampal.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "raniperearstikeskus.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rapidwater.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rayensalud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "reachlawtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realcdn.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realworksforms.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "redeyenetworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "regaltruckrepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "reiswegenhulp.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "remzi.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rendatododia.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "renner-und-koenigk.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "renovationmp.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rent-bot.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "residenzaperanziani.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "restauratori.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "restock.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "restorationgroup.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "retailzpos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "retalicecream.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "retrogarb.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rifiutozero.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "riseabovecredit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "robinloeffel.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "robpot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rockpov.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "romesite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ronchonrongeurs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rowan.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "roy-space.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rufei.wang", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rutice.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "safecode1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "safetytools.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saginawtx.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sahilten.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saltedfishes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "samina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "samisallinen.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "samsat.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sandbar.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sanignaciomun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sannhakhoa.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "santihealth.co.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saradahentai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sarahharrisphotography.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sashroy.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saveyourbusiness.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schmeckaner.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schmetzneedles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schoolstreaks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sea-force.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "searx.party", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seavisiongroup.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sebastianwyder.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sebeobjevovat.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seecdn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sefareshpardeh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sejambemvindosaofuturo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "selea.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sell.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sellorbuy.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sellorbuy.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sercanazizoglu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sericle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "serradiesel.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "servispcznojmo.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "setorneinvestidor.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "settleinestonia.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sewasafal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sexopolis.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sgm-eng.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shawfactor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shelly-forum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shifters.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shinshu.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sigedtour.gov.bf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "simcoepestx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "simexamericas.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sinopec.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sinuel.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sipse.gov.bf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sistemano.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sixstarwellbeing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "skillnestpro.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "skloposud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "skyeto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "skyler.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "skyltd.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sleeptrain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "slippagetolerance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sls.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smartiflix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smereka-frnt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smilingcfo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "snd-rhein.ruhr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "softcreatr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "softcreatr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "solu.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "solvd.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sound.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sourceproject.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spaghettispeller.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spec-antikor.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "speztech.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sportscpg.bi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sqlwrapper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "squaremeter24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ss.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "staarwaarsserver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stackroute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "startinnov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "startuphakk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "startwithcompassion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stepxpress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stesmarteyes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stichelbaut.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sticonline.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "story.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stratusfear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "suegofaults.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sufundamento.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sunsmartnsw.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "suntropez-shop.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "supermama.edu.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "supportsave.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "supremeconcreteco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "susanahill.photography", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sweetnest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sxyql.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "symcare.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "symplicit.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "synapse76.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "systemano.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "systemno.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "takaritasmiskolc.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "talenthope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "talenthope.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tandoanh.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taodo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taxcertificationform.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taxcertificationportal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taximarcaminha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taysiz.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teachingwithjen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teamceleris.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "techgarage.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "technolove.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "techrad.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "techsy.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tectuc.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teddywp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tehpod.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "telebari.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tenerunacasa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tequilamessenger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "termoline.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "test.support", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thajskychram.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thankspenny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "theballardpier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thebondyapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thedan.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thegreenmanofyork.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thegreenmanofyork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thelogicstudio.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thelogicstudio.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thereunion.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thewoodnorton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "theworkswide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "theyellowsub.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thismatters.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thlautogarage.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thomasstrne-jyotish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "threatemail.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "threean.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tibagolden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tibaview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tibek-cnc-technik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tiersigma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "time.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "timebucks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "timewall.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tipsbymoh.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tonecircuit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tools4free.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toovendre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toptica-eagleyard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "torrentpower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toto.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tout-vendre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tout-vendre.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tout-vendre.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.ci", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.cm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.pics", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toutvendre.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toylum.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tqno.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tra.go.cr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tracxtms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "traemostucoche.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tramin.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "transfem.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "traslochi.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trasportatore.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "travel4wellbeing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "travelrebel.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "treasureboxhomes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tripefactorysunderland.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tripu.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trucksimply.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trusted-signatures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trustted.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tshirts.durban", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tuercenter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "txokachat.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ubrains.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uea-inc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ueken-ob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ulada.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ultimatefightgear.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unbollowed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "understandingmoney.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unemployedunion.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unitedliners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unitpurchaseplan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unlockyourbrain.bzh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unsiteweb.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uonly.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "upidautomation.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uprizenow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uprooting.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "useworkshopapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "utilajedepadure.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "v-zone.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "validooo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "valledealcudiaeventos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vascareclinics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vcp.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vctpl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendre-tout.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendre-tout.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendre-tout.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendreacheter.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendreacheter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendreacheter.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendreouacheter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vendretout.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "veoconocimiento.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "verandering-berlin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "verifiermesactions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "verifymyeligibility.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "veteranarmy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "veterinario.napoli.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "victoriaisabel.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "viernesnegro.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vilasantina.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vinehost.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "visio.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "visitenovayork.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "volt.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "voodoobtc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vpsbudget.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vpsssl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vron.house", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vtechhealthcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vtwonen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vtwonen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "waki-ci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "walsrode-net.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "walsrode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "walsrode.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wangrufei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wayneswoodcraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "weelzbahamas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "welava.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "welum.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wesleyandpeiwenbear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wesleybear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wesleybear.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "west.vet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "westwardblinds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "whawtheme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "whitedragonmartialarts.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "whitehartdartmoor.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wholesaleganoderma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wildhealth.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "willows.uk.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "winn.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wolvex.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "womenleadingwomen.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "woof.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "workwides.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wrightsecurity.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wurmstube.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "www.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wxforms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wzitrade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--hy1bj8u2yeo4i8lh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--incentft-81a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--ncentfit-11a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--ncentft-yyag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xonados.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xserownia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xyh.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "y337.consulting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yado-vinyl.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yamasakit.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yarno.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yeoldemagicmag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yerelvitrin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ylilauta.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yokowatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yoppoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "youngsurveyors.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yourecipess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ywor.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zakiy.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zanreal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zaxid-kava.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zefirka.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zelina.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zelotech.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zemlya.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zenprivacy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zeva-mundial.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ziphealthy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zofoke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zongzi.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zrampage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     // END OF 1-YEAR BULK HSTS ENTRIES
 
     // Only eTLD+1 domains can be submitted automatically to hstspreload.org,
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins
index 199e8ded..1b1976d8 100644
--- a/net/http/transport_security_state_static.pins
+++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@
 #   hash function for preloaded entries again (we have already done so once).
 #
 
-# Last updated: 2025-05-22 12:57 UTC
+# Last updated: 2025-05-23 12:54 UTC
 PinsListTimestamp
-1747918626
+1748004855
 
 TestSPKI
 sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/http/transport_security_state_static_pins.json b/net/http/transport_security_state_static_pins.json
index be41b91..889b999 100644
--- a/net/http/transport_security_state_static_pins.json
+++ b/net/http/transport_security_state_static_pins.json
@@ -31,7 +31,7 @@
 // the 'static_spki_hashes' and 'bad_static_spki_hashes' fields in 'pinsets'
 // refer to, and the timestamp at which the pins list was last updated.
 //
-// Last updated: 2025-05-22 12:57 UTC
+// Last updated: 2025-05-23 12:54 UTC
 //
 {
   "pinsets": [
diff --git a/services/network/public/cpp/hash_value_mojom_traits.cc b/services/network/public/cpp/hash_value_mojom_traits.cc
index 220a76b9..0c0f47e 100644
--- a/services/network/public/cpp/hash_value_mojom_traits.cc
+++ b/services/network/public/cpp/hash_value_mojom_traits.cc
@@ -2,11 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifdef UNSAFE_BUFFERS_BUILD
-// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
-#pragma allow_unsafe_libc_calls
-#endif
-
 #include "services/network/public/cpp/hash_value_mojom_traits.h"
 
 #include <string.h>
diff --git a/services/webnn/tflite/graph_builder_tflite.cc b/services/webnn/tflite/graph_builder_tflite.cc
index 8693b74..988ff73 100644
--- a/services/webnn/tflite/graph_builder_tflite.cc
+++ b/services/webnn/tflite/graph_builder_tflite.cc
@@ -3649,12 +3649,8 @@
     case mojom::ElementWiseUnary::Kind::kCast: {
       CHECK(data_type_limits.cast_input.Supports(input_descriptor));
       return SerializeCastOperation(
-          input_tensor_index,
-          OperandDataTypeToTFLite(
-              GetOperand(op.input_operand_id).descriptor.data_type()),
-          output_tensor_index,
-          OperandDataTypeToTFLite(
-              GetOperand(op.output_operand_id).descriptor.data_type()));
+          input_tensor_index, input_tensor_info.data_type, output_tensor_index,
+          output_tensor_info.data_type);
     }
     case mojom::ElementWiseUnary::Kind::kCeil: {
       CHECK(data_type_limits.ceil_input.Supports(input_descriptor));
diff --git a/testing/scripts/variations_seed_access_helper.py b/testing/scripts/variations_seed_access_helper.py
index 7e2a627..a3a6138 100644
--- a/testing/scripts/variations_seed_access_helper.py
+++ b/testing/scripts/variations_seed_access_helper.py
@@ -90,7 +90,7 @@
 
 
 # TODO(crbug.com/417138763): Update this function to support reading the seed
-# from the seed file with proto format.
+# and signature from the seed file with proto format.
 def get_current_seed(user_data_dir):
   """Gets the current seed.
 
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 8feae85..5bee75d 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -566,22 +566,6 @@
             ]
         }
     ],
-    "AndroidBrowserControlsInViz": [
-        {
-            "platforms": [
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled_20240718",
-                    "enable_features": [
-                        "AndroidBcivBottomControls",
-                        "AndroidBrowserControlsInViz"
-                    ]
-                }
-            ]
-        }
-    ],
     "AndroidDumpOnScrollWithoutResource": [
         {
             "platforms": [
@@ -8420,28 +8404,6 @@
             ]
         }
     ],
-    "DropInputEventsWhilePaintHolding": [
-        {
-            "platforms": [
-                "android",
-                "android_weblayer",
-                "android_webview",
-                "chromeos",
-                "chromeos_lacros",
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "enable_features": [
-                        "DropInputEventsWhilePaintHolding"
-                    ]
-                }
-            ]
-        }
-    ],
     "DwaFeature": [
         {
             "platforms": [
@@ -15953,6 +15915,26 @@
             ]
         }
     ],
+    "PWANavigationCapturingAndroidDesktopWindowing": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "EnabledDesktopWindowingNavigations",
+                    "params": {
+                        "auxiliary_navigation_stays_in_browser": "desktop_wm"
+                    },
+                    "enable_features": [
+                        "AuxiliaryNavigationStaysInBrowser",
+                        "ReparentAuxiliaryNavigationFromPWA",
+                        "ReparentTopLevelNavigationFromPWA"
+                    ]
+                }
+            ]
+        }
+    ],
     "PWANavigationCapturingV2ChromeOS": [
         {
             "platforms": [
diff --git a/third_party/angle b/third_party/angle
index c1e806d..275745f 160000
--- a/third_party/angle
+++ b/third_party/angle
@@ -1 +1 @@
-Subproject commit c1e806dec7a183ef7d85d9345d81dd0c7b1b5e93
+Subproject commit 275745ff8b294d025f3dac0eb431998442f600b8
diff --git a/third_party/blink/renderer/core/animation/css_transform_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_transform_interpolation_type.cc
index 83cd0cc..860bf75 100644
--- a/third_party/blink/renderer/core/animation/css_transform_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_transform_interpolation_type.cc
@@ -9,6 +9,7 @@
 
 #include "third_party/blink/renderer/core/animation/interpolable_transform_list.h"
 #include "third_party/blink/renderer/core/animation/length_units_checker.h"
+#include "third_party/blink/renderer/core/animation/tree_counting_checker.h"
 #include "third_party/blink/renderer/core/animation/underlying_value_owner.h"
 #include "third_party/blink/renderer/core/css/css_function_value.h"
 #include "third_party/blink/renderer/core/css/css_primitive_value.h"
@@ -89,8 +90,11 @@
     const CSSValue& value,
     const StyleResolverState& state,
     ConversionCheckers& conversion_checkers) const {
+  const CSSToLengthConversionData& conversion_data =
+      state.CssToLengthConversionData();
   if (auto* list_value = DynamicTo<CSSValueList>(value)) {
     CSSPrimitiveValue::LengthTypeFlags types;
+    bool needs_tree_counting_checker = false;
     for (const CSSValue* item : *list_value) {
       const auto& transform_function = To<CSSFunctionValue>(*item);
       if (transform_function.FunctionType() == CSSValueID::kMatrix ||
@@ -107,6 +111,12 @@
         DCHECK(primitive_value ||
                (transform_function.FunctionType() == CSSValueID::kPerspective &&
                 argument->IsIdentifierValue()));
+        if (!primitive_value) {
+          continue;
+        }
+        if (primitive_value->IsElementDependent()) {
+          needs_tree_counting_checker = true;
+        }
         if (!primitive_value || (!primitive_value->IsLength() &&
                                  primitive_value->IsResolvableBeforeLayout())) {
           continue;
@@ -119,12 +129,14 @@
             LengthUnitsChecker::MaybeCreate(types, state)) {
       conversion_checkers.push_back(length_units_checker);
     }
-    // TODO(crbug.com/415626999): Create a TreeCountingChecker for
-    // sibling-index() and sibling-count() if necessary.
+    if (needs_tree_counting_checker) {
+      conversion_checkers.push_back(
+          TreeCountingChecker::Create(conversion_data));
+    }
   }
 
   return InterpolationValue(InterpolableTransformList::ConvertCSSValue(
-      value, state.CssToLengthConversionData(),
+      value, conversion_data,
       TransformOperations::BoxSizeDependentMatrixBlending::kAllow));
 }
 
diff --git a/third_party/blink/renderer/core/events/promise_rejection_event.cc b/third_party/blink/renderer/core/events/promise_rejection_event.cc
index c239e54e..63677b7e 100644
--- a/third_party/blink/renderer/core/events/promise_rejection_event.cc
+++ b/third_party/blink/renderer/core/events/promise_rejection_event.cc
@@ -17,7 +17,8 @@
     const PromiseRejectionEventInit* initializer)
     : Event(type, initializer),
       world_(&script_state->World()),
-      promise_(initializer->promise()) {
+      promise_(script_state->GetIsolate(),
+               initializer->promise().Unwrap().V8Promise()) {
   if (initializer->hasReason()) {
     reason_.Reset(script_state->GetIsolate(), initializer->reason().V8Value());
   }
@@ -25,14 +26,13 @@
 
 PromiseRejectionEvent::~PromiseRejectionEvent() = default;
 
-ScriptPromise<IDLAny> PromiseRejectionEvent::promise(
-    ScriptState* script_state) const {
+ScriptObject PromiseRejectionEvent::promise(ScriptState* script_state) const {
   // Return null when the promise is accessed by a different world than the
   // world that created the promise.
   if (!CanBeDispatchedInWorld(script_state->World())) {
-    return EmptyPromise();
+    return ScriptObject::CreateNull(script_state->GetIsolate());
   }
-  return promise_;
+  return ScriptObject(script_state->GetIsolate(), promise_.Get(script_state));
 }
 
 ScriptValue PromiseRejectionEvent::reason(ScriptState* script_state) const {
diff --git a/third_party/blink/renderer/core/events/promise_rejection_event.h b/third_party/blink/renderer/core/events/promise_rejection_event.h
index 052f4de..8258e55 100644
--- a/third_party/blink/renderer/core/events/promise_rejection_event.h
+++ b/third_party/blink/renderer/core/events/promise_rejection_event.h
@@ -35,7 +35,7 @@
   ~PromiseRejectionEvent() override;
 
   ScriptValue reason(ScriptState*) const;
-  ScriptPromise<IDLAny> promise(ScriptState*) const;
+  ScriptObject promise(ScriptState*) const;
 
   const AtomicString& InterfaceName() const override;
 
@@ -47,7 +47,7 @@
 
  private:
   const Member<DOMWrapperWorld> world_;
-  MemberScriptPromise<IDLAny> promise_;
+  WorldSafeV8Reference<v8::Promise> promise_;
   TraceWrapperV8Reference<v8::Value> reason_;
 };
 
diff --git a/third_party/blink/renderer/core/events/promise_rejection_event.idl b/third_party/blink/renderer/core/events/promise_rejection_event.idl
index 2885d196..693b2e78 100644
--- a/third_party/blink/renderer/core/events/promise_rejection_event.idl
+++ b/third_party/blink/renderer/core/events/promise_rejection_event.idl
@@ -8,6 +8,6 @@
     Exposed=(Window,Worker,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=*
 ] interface PromiseRejectionEvent : Event {
     [CallWith=ScriptState] constructor(DOMString type, PromiseRejectionEventInit eventInitDict);
-    [CallWith=ScriptState] readonly attribute Promise<any> promise;
+    [CallWith=ScriptState] readonly attribute object promise;
     [CallWith=ScriptState] readonly attribute any reason;
 };
diff --git a/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder.cc b/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder.cc
index b39ef563..64e4c3f 100644
--- a/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder.cc
+++ b/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder.cc
@@ -86,6 +86,12 @@
     reasons |= CompositingReason::kWillChangeFilter;
   if (style.HasWillChangeBackdropFilterHint())
     reasons |= CompositingReason::kWillChangeBackdropFilter;
+  if (style.HasWillChangeClipPathHint()) {
+    reasons |= CompositingReason::kWillChangeClipPath;
+  }
+  if (style.HasWillChangeMixBlendModeHint()) {
+    reasons |= CompositingReason::kWillChangeMixBlendMode;
+  }
 
   // kWillChangeOther is needed only when none of the explicit kWillChange*
   // reasons are set.
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h
index 33af504..96bc1d5 100644
--- a/third_party/blink/renderer/core/style/computed_style.h
+++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -1195,6 +1195,12 @@
   bool HasWillChangeBackdropFilterHint() const {
     return WillChangeProperties().Contains(CSSPropertyID::kBackdropFilter);
   }
+  bool HasWillChangeClipPathHint() const {
+    return WillChangeProperties().Contains(CSSPropertyID::kClipPath);
+  }
+  bool HasWillChangeMixBlendModeHint() const {
+    return WillChangeProperties().Contains(CSSPropertyID::kMixBlendMode);
+  }
 
   // Hyphen utility functions.
   Hyphenation* GetHyphenation() const;
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_context.cc b/third_party/blink/renderer/core/timing/soft_navigation_context.cc
index 57efee9..ecc10364 100644
--- a/third_party/blink/renderer/core/timing/soft_navigation_context.cc
+++ b/third_party/blink/renderer/core/timing/soft_navigation_context.cc
@@ -5,17 +5,22 @@
 #include "third_party/blink/renderer/core/timing/soft_navigation_context.h"
 
 #include "base/trace_event/trace_event.h"
+#include "third_party/blink/renderer/core/dom/container_node.h"
 #include "third_party/blink/renderer/core/dom/node.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
 
 namespace blink {
 
 uint64_t SoftNavigationContext::last_context_id_ = 0;
 
-SoftNavigationContext::SoftNavigationContext() = default;
+SoftNavigationContext::SoftNavigationContext(
+    bool advanced_paint_attribution_enabled)
+    : advanced_paint_attribution_enabled_(advanced_paint_attribution_enabled) {}
 
 void SoftNavigationContext::AddModifiedNode(Node* node) {
-  auto add_result = modified_nodes_.insert(node);
+  node->SetIsModifiedBySoftNavigation();
 
+  auto add_result = modified_nodes_.insert(node);
   if (add_result.is_new_entry) {
     // If this is the first mod this animation frame, trace it.
     if (num_modified_dom_nodes_ ==
@@ -45,21 +50,48 @@
     return false;
   }
 
-  if (modified_nodes_.Contains(node)) {
-    already_painted_modified_nodes_.insert(node);
-    // If this is the first paint this animation frame, trace it.
-    if (painted_area_ == painted_area_last_animation_frame_) {
-      // TODO(crbug.com/353218760): Add support for reporting every single
-      // paint.
+  // For now, we only check paint after we meet other criteria, in order to
+  // reduce the risk of needless tree walks during paint.
+  CHECK(SatisfiesSoftNavNonPaintCriteria());
+
+  // Iterate up the dom tree:
+  for (Node* current_node = node; current_node;
+       current_node = current_node->parentNode()) {
+    if (current_node == known_not_related_parent_) {
       TRACE_EVENT_INSTANT(
           TRACE_DISABLED_BY_DEFAULT("loading"),
-          "SoftNavigationContext::FirstAttributablePaintInAnimationFrame",
+          "SoftNavigationContext::AddPaintedAreaWithEarlyExitTreeWalk",
           "context", this);
+      break;
     }
-    painted_area_ += painted_area;
-    return true;
+    // If the current_node is known modified, it is a container root, and this
+    // paint counts.
+    if (modified_nodes_.Contains(current_node)) {
+      already_painted_modified_nodes_.insert(node);
+      // If this is the first paint this animation frame, trace it.
+      if (painted_area_ == painted_area_last_animation_frame_) {
+        // TODO(crbug.com/353218760): Add support for reporting every single
+        // paint.
+        TRACE_EVENT_INSTANT(
+            TRACE_DISABLED_BY_DEFAULT("loading"),
+            "SoftNavigationContext::FirstAttributablePaintInAnimationFrame",
+            "context", this);
+      }
+      painted_area_ += painted_area;
+      return true;
+    }
+
+    // For now, do not "tree walk" unless this flag is enabled.
+    if (!advanced_paint_attribution_enabled_) {
+      break;
+    }
   }
 
+  // This node was not part of a container root for this context.
+  // Let's cache this node's parent node, so if any of this node's siblings
+  // paint next, we can finish this check quicker for them.
+  known_not_related_parent_ = node->parentNode();
+
   if (is_newest_context) {
     // We want to know how much paint the page is doing that isn't attributed.
     // We only want to do this for a single (most recent) context, in order to
@@ -81,6 +113,9 @@
 }
 
 bool SoftNavigationContext::OnPaintFinished() {
+  // Reset this with each paint, since the conditions might change.
+  known_not_related_parent_ = nullptr;
+
   auto num_modded_new_nodes =
       num_modified_dom_nodes_ - num_modified_dom_nodes_last_animation_frame_;
   auto num_gced_old_nodes = num_live_nodes_last_animation_frame_ +
@@ -126,6 +161,7 @@
 void SoftNavigationContext::Trace(Visitor* visitor) const {
   visitor->Trace(modified_nodes_);
   visitor->Trace(already_painted_modified_nodes_);
+  visitor->Trace(known_not_related_parent_);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_context.h b/third_party/blink/renderer/core/timing/soft_navigation_context.h
index 43f486d..0b72e9b 100644
--- a/third_party/blink/renderer/core/timing/soft_navigation_context.h
+++ b/third_party/blink/renderer/core/timing/soft_navigation_context.h
@@ -9,6 +9,7 @@
 
 #include "base/time/time.h"
 #include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
@@ -22,7 +23,7 @@
   static uint64_t last_context_id_;
 
  public:
-  SoftNavigationContext();
+  explicit SoftNavigationContext(bool advanced_paint_attribution_enabled);
 
   bool IsMostRecentlyCreatedContext() const {
     return context_id_ == last_context_id_;
@@ -68,6 +69,8 @@
   // largest value and can be used to identify the most recent context.
   const uint64_t context_id_ = ++last_context_id_;
 
+  bool advanced_paint_attribution_enabled_;
+
   base::TimeTicks user_interaction_timestamp_;
   String url_;
   bool was_emitted_ = false;
@@ -86,6 +89,8 @@
   size_t num_live_nodes_last_animation_frame_ = 0;
   uint64_t painted_area_last_animation_frame_ = 0;
   uint64_t repainted_area_last_animation_frame_ = 0;
+
+  WeakMember<Node> known_not_related_parent_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc
index ffcdc6c..fec3dcff 100644
--- a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc
+++ b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc
@@ -252,7 +252,6 @@
   if (!context) {
     return false;
   }
-  node->SetIsModifiedBySoftNavigation();
   context->AddModifiedNode(node);
 
   EmitSoftNavigationEntryIfAllConditionsMet(context);
@@ -324,30 +323,13 @@
 void SoftNavigationHeuristics::RecordPaint(LocalFrame* frame,
                                            const gfx::RectF& rect,
                                            Node* node) {
-  // A node which was created in a different window and transferred to this
-  // window might have modified-bit set, but this SNH class might not actually
-  // be set to detecting softnavs.
-  if (!node->IsModifiedBySoftNavigation()) {
-    return;
-  }
-
-  // First, start with the most likely context.
+  // For now, we only care to map paints for the most recent context to meet
+  // non-paint criteria.
   if (most_recent_context_to_meet_non_paint_criteria_ &&
       most_recent_context_to_meet_non_paint_criteria_->AddPaintedArea(
           node, rect, true)) {
     return;
   }
-
-  // Then, reverse-iterate the rest of the list.
-  for (auto& context : base::Reversed(potential_soft_navigations_)) {
-    if (context == most_recent_context_to_meet_non_paint_criteria_) {
-      continue;
-    }
-    if (context->AddPaintedArea(node, rect,
-                                context->IsMostRecentlyCreatedContext())) {
-      break;
-    }
-  }
 }
 
 void SoftNavigationHeuristics::OnPaintFinished() {
@@ -528,8 +510,9 @@
     // "new interaction" (i.e. keydown), but will create a new one if that has
     // been cleared, which can happen in tests.
     if (IsInteractionStart(type) || !active_interaction_context_) {
-      active_interaction_context_ =
-          MakeGarbageCollected<SoftNavigationContext>();
+      active_interaction_context_ = MakeGarbageCollected<SoftNavigationContext>(
+          RuntimeEnabledFeatures::
+              SoftNavigationDetectionAdvancedPaintAttributionEnabled(window_));
       potential_soft_navigations_.push_back(active_interaction_context_);
       TRACE_EVENT_INSTANT(TRACE_DISABLED_BY_DEFAULT("loading"),
                           "SoftNavigationHeuristics::CreateNewContext",
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_heuristics_test.cc b/third_party/blink/renderer/core/timing/soft_navigation_heuristics_test.cc
index 1d2d73e..f834375 100644
--- a/third_party/blink/renderer/core/timing/soft_navigation_heuristics_test.cc
+++ b/third_party/blink/renderer/core/timing/soft_navigation_heuristics_test.cc
@@ -327,35 +327,54 @@
   scheduler::TaskAttributionInfo* task_state = nullptr;
   SoftNavigationContext* context = nullptr;
 
+  Node* node1 = CreateNodeForTest();
+  Node* node2 = CreateNodeForTest();
+
+  // Simulate an event listener that starts a soft-nav
   {
     auto* event =
         CreateEvent(SoftNavigationHeuristics::EventScope::Type::kClick);
     std::optional<SoftNavigationHeuristics::EventScope> event_scope(
         heuristics->MaybeCreateEventScopeForEvent(*event));
-    {
-      std::optional<TaskScope> task_scope =
-          tracker->MaybeCreateTaskScopeForCallback(script_state, nullptr);
-      task_state = tracker->RunningTask();
-      ASSERT_TRUE(task_state);
-      context = task_state->GetSoftNavigationContext();
-      ASSERT_TRUE(context);
+    std::optional<TaskScope> task_scope =
+        tracker->MaybeCreateTaskScopeForCallback(script_state, nullptr);
+    task_state = tracker->RunningTask();
+    ASSERT_TRUE(task_state);
+    context = task_state->GetSoftNavigationContext();
+    ASSERT_TRUE(context);
 
-      heuristics->SameDocumentNavigationCommitted("foo.html", context);
-      Node* node = CreateNodeForTest();
-      heuristics->ModifiedDOM(node);
-      ReportPaintRectForTest(heuristics, node);
-    }
+    EXPECT_FALSE(context->SatisfiesSoftNavNonPaintCriteria());
+    heuristics->SameDocumentNavigationCommitted("foo.html", context);
+    heuristics->ModifiedDOM(node1);
+    EXPECT_FALSE(context->SatisfiesSoftNavNonPaintCriteria());
   }
-  EXPECT_EQ(heuristics->SoftNavigationCount(), 1u);
+  EXPECT_TRUE(context->SatisfiesSoftNavNonPaintCriteria());
+  EXPECT_FALSE(context->SatisfiesSoftNavPaintCriteria(1));
 
+  // Simulate a paint in a separate task.
+  {
+    ReportPaintRectForTest(heuristics, node1);
+    EXPECT_TRUE(context->SatisfiesSoftNavPaintCriteria(1));
+    EXPECT_EQ(heuristics->SoftNavigationCount(), 1u);
+  }
+
+  // Simulate another task for the same context, which does a second soft-nav
   {
     std::optional<TaskScope> task_scope =
         tracker->MaybeCreateTaskScopeForCallback(script_state, task_state);
+    EXPECT_EQ(tracker->RunningTask()->GetSoftNavigationContext(), context);
     heuristics->SameDocumentNavigationCommitted("bar.html", context);
-    Node* node = CreateNodeForTest();
-    heuristics->ModifiedDOM(node);
-    ReportPaintRectForTest(heuristics, node);
+    heuristics->ModifiedDOM(node2);
   }
+
+  // And another paint
+  {
+    ReportPaintRectForTest(heuristics, node2);
+  }
+
+  // Should still just have one single soft-nav because a single context
+  // with a single Interaction should only emit once, even if it e.g. navigates
+  // twice (i.e. client-side redirects).
   EXPECT_EQ(heuristics->SoftNavigationCount(), 1u);
 }
 
diff --git a/third_party/blink/renderer/modules/ai/language_model_prompt_builder.cc b/third_party/blink/renderer/modules/ai/language_model_prompt_builder.cc
index bf795f8..8547860 100644
--- a/third_party/blink/renderer/modules/ai/language_model_prompt_builder.cc
+++ b/third_party/blink/renderer/modules/ai/language_model_prompt_builder.cc
@@ -145,6 +145,11 @@
   void AudioToMojo(base::span<uint8_t> bytes, PendingEntry* entry);
   void BitmapToMojo(base::span<uint8_t> bytes, PendingEntry* entry);
 
+  // Called when an ImageBitmap is finished decoding.
+  void OnBitmapLoaded(PendingEntry* entry,
+                      ScriptState* script_state,
+                      ImageBitmap* bitmap);
+
   SelfKeepAlive<LanguageModelPromptBuilder> keep_alive_{this};
   WTF::Vector<mojom::blink::AILanguageModelPromptPtr> processed_prompts_;
 
@@ -460,68 +465,40 @@
   AudioToMojo(audio_contents.ByteSpan(), entry);
 }
 
+// ThenCallable wrapper that calls a callback with the resolved/rejected value.
+template <typename Type, typename ReactType = Type*>
+class ThenCallback : public ThenCallable<Type, ThenCallback<Type, ReactType>> {
+ public:
+  explicit ThenCallback(
+      base::OnceCallback<void(ScriptState*, ReactType)> callback)
+      : callback(std::move(callback)) {}
+  void React(ScriptState* script_state, ReactType value) {
+    std::move(callback).Run(script_state, value);
+  }
+  base::OnceCallback<void(ScriptState*, ReactType)> callback;
+};
+
 void LanguageModelPromptBuilder::ToMojo(V8ImageBitmapSource* bitmap,
                                         PendingEntry* entry) {
-  // TODO(crbug.com/419321438): Change CreateImageBitmap to not use JS promises.
-  class Resolve : public ThenCallable<ImageBitmap, Resolve> {
-   public:
-    explicit Resolve(LanguageModelPromptBuilder* builder, PendingEntry* entry)
-        : builder_(builder), entry_(entry) {}
-    void Trace(Visitor* visitor) const override {
-      visitor->Trace(builder_);
-      visitor->Trace(entry_);
-      ThenCallable<ImageBitmap, Resolve>::Trace(visitor);
-    }
-    void React(ScriptState* script_state, ImageBitmap* value) {
-      v8::Isolate* isolate = script_state->GetIsolate();
-      v8::TryCatch try_catch(isolate);
-      ExceptionState exception_state(isolate);
-      if (!value) {
-        builder_->Reject(DOMException::Create(
-            "Invalid image bitmap.",
-            DOMException::GetErrorName(DOMExceptionCode::kDataError)));
-        return;
-      }
-      std::optional<SkBitmap> skia_bitmap =
-          GetBitmapFromCanvasImageSource(*value, exception_state);
-      if (!skia_bitmap) {
-        CHECK(exception_state.HadException() && try_catch.HasCaught());
-        builder_->Reject(ScriptValue(isolate, try_catch.Exception()));
-        return;
-      }
-      builder_->OnPromptContentProcessed(
-          mojom::blink::AILanguageModelPromptContent::NewBitmap(
-              skia_bitmap.value()),
-          entry_);
-    }
-
-   private:
-    Member<LanguageModelPromptBuilder> builder_;
-    Member<PendingEntry> entry_;
-  };
-  class Reject : public ThenCallable<IDLAny, Reject> {
-   public:
-    explicit Reject(LanguageModelPromptBuilder* builder) : builder_(builder) {}
-    void Trace(Visitor* visitor) const override {
-      visitor->Trace(builder_);
-      ThenCallable<IDLAny, Reject>::Trace(visitor);
-    }
-    void React(ScriptState* script_state, ScriptValue value) {
-      builder_->Reject(value);
-    }
-    Member<LanguageModelPromptBuilder> builder_;
-  };
   v8::Isolate* isolate = script_state_->GetIsolate();
   v8::TryCatch try_catch(isolate);
   ExceptionState exception_state(isolate);
   // Note: GetBitmapFromV8ImageBitmapSource doesn't support async which is
   // required for blobs so async ImageBitmapFactories::CreateImageBitmap is
   // preferred.
+  // TODO(crbug.com/419321438): Change CreateImageBitmap to not use JS promises.
   ImageBitmapFactories::CreateImageBitmap(
       script_state_, bitmap, MakeGarbageCollected<ImageBitmapOptions>(),
       exception_state)
-      .Then(script_state_, MakeGarbageCollected<Resolve>(this, entry),
-            MakeGarbageCollected<Reject>(this));
+      .Then(
+          script_state_,
+          MakeGarbageCollected<ThenCallback<ImageBitmap>>(
+              WTF::BindOnce(&LanguageModelPromptBuilder::OnBitmapLoaded,
+                            WrapPersistent(this), WrapPersistent(entry))),
+          MakeGarbageCollected<ThenCallback<IDLAny, ScriptValue>>(WTF::BindOnce(
+              [](LanguageModelPromptBuilder* builder, ScriptState* script_state,
+                 ScriptValue value) { builder->Reject(std::move(value)); },
+              WrapPersistent(this))));
 
   if (exception_state.HadException()) {
     CHECK(try_catch.HasCaught());
@@ -529,6 +506,31 @@
   }
 }
 
+void LanguageModelPromptBuilder::OnBitmapLoaded(PendingEntry* entry,
+                                                ScriptState* script_state,
+                                                ImageBitmap* bitmap) {
+  v8::Isolate* isolate = script_state->GetIsolate();
+  v8::TryCatch try_catch(isolate);
+  ExceptionState exception_state(isolate);
+  if (!bitmap) {
+    Reject(DOMException::Create(
+        "Invalid image bitmap.",
+        DOMException::GetErrorName(DOMExceptionCode::kDataError)));
+    return;
+  }
+  std::optional<SkBitmap> skia_bitmap =
+      GetBitmapFromCanvasImageSource(*bitmap, exception_state);
+  if (!skia_bitmap) {
+    CHECK(exception_state.HadException() && try_catch.HasCaught());
+    Reject(ScriptValue(isolate, try_catch.Exception()));
+    return;
+  }
+  OnPromptContentProcessed(
+      mojom::blink::AILanguageModelPromptContent::NewBitmap(
+          skia_bitmap.value()),
+      entry);
+}
+
 }  // namespace
 
 void ConvertPromptInputsToMojo(
diff --git a/third_party/blink/renderer/platform/graphics/compositing_reasons.cc b/third_party/blink/renderer/platform/graphics/compositing_reasons.cc
index 397a77ee..ddbf77b 100644
--- a/third_party/blink/renderer/platform/graphics/compositing_reasons.cc
+++ b/third_party/blink/renderer/platform/graphics/compositing_reasons.cc
@@ -73,6 +73,10 @@
      "Has a will-change: filter compositing hint."},
     {CompositingReason::kWillChangeBackdropFilter,
      "Has a will-change: backdrop-filter compositing hint."},
+    {CompositingReason::kWillChangeClipPath,
+     "Has a will-change: clip-path compositing hint."},
+    {CompositingReason::kWillChangeMixBlendMode,
+     "Has a will-change: mix-blend-mode compositing hint."},
     {CompositingReason::kWillChangeOther,
      "Has a will-change compositing hint other than transform, opacity, filter"
      " and backdrop-filter."},
diff --git a/third_party/blink/renderer/platform/graphics/compositing_reasons.h b/third_party/blink/renderer/platform/graphics/compositing_reasons.h
index 792ec8cc..393bd733 100644
--- a/third_party/blink/renderer/platform/graphics/compositing_reasons.h
+++ b/third_party/blink/renderer/platform/graphics/compositing_reasons.h
@@ -47,6 +47,8 @@
   V(WillChangeOpacity)                                                         \
   V(WillChangeFilter)                                                          \
   V(WillChangeBackdropFilter)                                                  \
+  V(WillChangeClipPath)                                                        \
+  V(WillChangeMixBlendMode)                                                    \
   /* This flag is needed only when none of the explicit kWillChange* reasons   \
      are set. */                                                               \
   V(WillChangeOther)                                                           \
@@ -89,7 +91,7 @@
   V(Scrollbar)                                                                 \
   V(LinkHighlight)                                                             \
   V(DevToolsOverlay)                                                           \
-  V(ViewTransitionContent)                                                     \
+  V(ViewTransitionContent)
 
 class PLATFORM_EXPORT CompositingReason {
   DISALLOW_NEW();
@@ -148,7 +150,8 @@
         kRootScroller | kOverflowScrolling,
     kDirectReasonsForEffectProperty =
         kActiveOpacityAnimation | kWillChangeOpacity | kBackdropFilter |
-        kWillChangeBackdropFilter | kActiveBackdropFilterAnimation |
+        kWillChangeBackdropFilter | kWillChangeClipPath |
+        kWillChangeMixBlendMode | kActiveBackdropFilterAnimation |
         kViewTransitionPseudoElement | kTransform3DSceneLeaf | kElementCapture,
     kDirectReasonsForFilterProperty =
         kActiveFilterAnimation | kWillChangeFilter,
diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
index 41e8992a..80e7901 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
@@ -178,15 +178,17 @@
     const gfx::Size size(image_for_compositor->width(),
                          image_for_compositor->height());
 
-    bool is_overlay_candidate =
-        shared_image->usage().Has(gpu::SHARED_IMAGE_USAGE_SCANOUT);
+    viz::TransferableResource::MetadataOverride overrides = {
+        .format = image_for_compositor->GetSharedImageFormat(),
+        .size = size,
+        .color_space = gfx::ColorSpace(),
+        .alpha_type = kPremul_SkAlphaType,
+    };
 
-    *out_resource = viz::TransferableResource::MakeGpu(
-        shared_image, shared_image->GetTextureTarget(),
-        image_for_compositor->GetSyncToken(), size,
-        image_for_compositor->GetSharedImageFormat(), is_overlay_candidate,
-        viz::TransferableResource::ResourceSource::kImageLayerBridge);
-    out_resource->origin = shared_image->surface_origin();
+    *out_resource = viz::TransferableResource::Make(
+        shared_image,
+        viz::TransferableResource::ResourceSource::kImageLayerBridge,
+        image_for_compositor->GetSyncToken(), overrides);
 
     auto func = WTF::BindOnce(&ImageLayerBridge::ResourceReleasedGpu,
                               WrapWeakPersistent(this),
@@ -233,13 +235,17 @@
       return false;
     }
 
-    *out_resource = viz::TransferableResource::MakeSoftwareSharedImage(
-        resource.shared_image, resource.sync_token, size, format,
-        viz::TransferableResource::ResourceSource::kImageLayerBridge);
-    out_resource->origin = kTopLeft_GrSurfaceOrigin;
-    out_resource->color_space = sk_image->colorSpace()
+    auto resource_color_space = sk_image->colorSpace()
                                     ? gfx::ColorSpace(*sk_image->colorSpace())
                                     : gfx::ColorSpace::CreateSRGB();
+
+    viz::TransferableResource::MetadataOverride overrides = {
+        .color_space = resource_color_space,
+    };
+    *out_resource = viz::TransferableResource::Make(
+        resource.shared_image,
+        viz::TransferableResource::ResourceSource::kImageLayerBridge,
+        resource.sync_token, overrides);
     auto func = WTF::BindOnce(&ImageLayerBridge::ResourceReleasedSoftware,
                               WrapWeakPersistent(this), std::move(resource));
     *out_release_callback = std::move(func);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index a06d35c..6bdddfda 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -4575,9 +4575,14 @@
       status: "stable",
     },
     {
+      name: "SoftNavigationDetectionAdvancedPaintAttribution",
+      status: "experimental",
+      depends_on: ["SoftNavigationDetection"],
+    },
+    {
       name: "SoftNavigationHeuristics",
       status: "experimental",
-      depends_on: ["NavigationId","SoftNavigationDetection"],
+      depends_on: ["NavigationId","SoftNavigationDetectionAdvancedPaintAttribution"],
       origin_trial_allows_third_party: true,
       origin_trial_feature_name: "SoftNavigationHeuristics",
     },
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 6b23a27..f968686 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -311,6 +311,12 @@
 
 # --- END canvasRenderingContext.placeElement() implementation
 
+# --- canvasRenderingContext.drawElement() implementation: issues.chromium.org/issues/417556295
+
+crbug.com/419363705 wpt_internal/html/canvas/drawElement/svg-foreign-object.html [ Failure ]
+
+# --- END canvasRenderingContext.drawElement() implementation
+
 # --- Skia roll test suppressions
 
 # --- END Skia roll test suppresions
@@ -3347,6 +3353,7 @@
 crbug.com/378891966 [ Win10.20h2 ] virtual/no-auto-wpt-origin-isolation/external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_iframe_pdf_viewer.html [ Failure ]
 crbug.com/378891966 [ Linux ] virtual/no-auto-wpt-origin-isolation/external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_iframe_pdf_viewer.html [ Failure ]
 crbug.com/378891966 [ Mac ] virtual/no-auto-wpt-origin-isolation/external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_iframe_pdf_viewer.html [ Failure ]
+crbug.com/415773057 [ Mac15 ] virtual/no-auto-wpt-origin-isolation/external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-navigation-reload.html [ Crash ]
 crbug.com/378014595 [ Mac15 ] external/wpt/webrtc/RTCPeerConnection-addIceCandidate.html [ Timeout ]
 crbug.com/378014595 [ Mac15 ] external/wpt/webrtc/RTCPeerConnection-description-attributes-timing.https.html [ Timeout ]
 crbug.com/378750930 [ Mac14 ] external/wpt/webcodecs/per-frame-qp-encoding.https.any.html?av1 [ Timeout ]
@@ -3586,6 +3593,7 @@
 crbug.com/347779309 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-link-click-fragment.html [ Timeout ]
 crbug.com/347779309 [ Win10.20h2 ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-navigation-reload.html [ Crash Failure ]
 crbug.com/347779309 [ Mac14 ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-navigation-reload.html [ Crash ]
+crbug.com/347779309 [ Mac15 ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-navigation-reload.html [ Crash ]
 crbug.com/347779309 [ Linux ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-navigation-reload.html [ Crash ]
 crbug.com/347779309 [ Linux ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-form-submit.html [ Failure Pass ]
 crbug.com/347779309 [ Linux ] external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-meta-refresh.optional.html [ Failure Pass ]
@@ -5328,10 +5336,6 @@
 # Failing origin trial for css properties test
 crbug.com/1041993 http/tests/origin_trials/sample-api-script-added-after-css-declaration.html [ Failure ]
 
-# Will change clip-path and mix-blend-mode don't trigger a Backdrop Root
-crbug.com/338250112 external/wpt/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html [ Failure ]
-crbug.com/338250112 external/wpt/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html [ Failure ]
-
 # Ref_Tests which fail when SkiaRenderer is enable, and which cannot be
 # rebaselined. TODO(jonross): triage these into any existing bugs or file more
 # specific bugs.
@@ -7328,10 +7332,6 @@
 crbug.com/1382865 external/wpt/storage-access-api/requestStorageAccess-cross-site-iframe.sub.https.window.html [ Failure ]
 crbug.com/1382865 external/wpt/storage-access-api/requestStorageAccess-nested-cross-site-iframe.sub.https.window.html [ Failure ]
 
-# Test is flaky with "Illegal invocation" error reading
-# PromiseRejectionEvent.promise
-crbug.com/407400666 external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.+) [ Failure Pass ]
-
 # Sheriff 2022-11-15
 crbug.com/1383990 [ Mac ] external/wpt/html/dom/idlharness.worker.html [ Failure Skip ]
 crbug.com/1383989 [ Mac ] external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window.html [ Failure Skip ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index 7e72af7..76cbe49 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -631,6 +631,20 @@
        {}
       ]
      ],
+     "anchor-in-multicol-crash.html": [
+      "8a4206630a17a3ddd5c7607367c685454a598852",
+      [
+       null,
+       {}
+      ]
+     ],
+     "anchor-in-multicol-inherit-crash.html": [
+      "233f8382e8a479e95c235dac2854a355d3341ad3",
+      [
+       null,
+       {}
+      ]
+     ],
      "anchor-scroll-composited-scrolling-001-crash.html": [
       "e8ecde3a3e36702d8833c6caa0c94782243edba4",
       [
@@ -5905,6 +5919,13 @@
        {}
       ]
      ],
+     "root-reconstruct-frame-tree-crash.html": [
+      "bff9a1629a1cdcdc2aac2bd5c961a47823e3f5a7",
+      [
+       null,
+       {}
+      ]
+     ],
      "root-replace-crash.html": [
       "165eec41b6bc56db131cc7fc19f23701bc291b8c",
       [
@@ -86339,7 +86360,7 @@
         ]
        ],
        "corner-shape-render-fuzzy.html": [
-        "590e960830f595c7bc6f730d12d69e19c2ba0453",
+        "12cd2546bf484282a8cab7163c610b5b88d0b9f8",
         [
          "css/css-borders/tentative/corner-shape/corner-shape-render-fuzzy.html?border-radius=30%&corner-shape=superellipse(-1.5)&box-shadow=10px%2010px%200%2010px%20black",
          [
@@ -86471,32 +86492,6 @@
          }
         ],
         [
-         "css/css-borders/tentative/corner-shape/corner-shape-render-fuzzy.html?corner-shape=scoop&border-radius=20%&border-width=20px&border-top-color=rebeccapurple&border-bottom-color=blue",
-         [
-          [
-           "/css/css-borders/tentative/corner-shape/corner-shape-any-ref.html?corner-shape=scoop&border-radius=20%&border-width=20px&border-top-color=rebeccapurple&border-bottom-color=blue",
-           "=="
-          ]
-         ],
-         {
-          "fuzzy": [
-           [
-            null,
-            [
-             [
-              0,
-              200
-             ],
-             [
-              0,
-              550
-             ]
-            ]
-           ]
-          ]
-         }
-        ],
-        [
          "css/css-borders/tentative/corner-shape/corner-shape-render-fuzzy.html?corner-shape=squircle&border-radius=25%&border-width=20px",
          [
           [
@@ -86757,32 +86752,6 @@
          }
         ],
         [
-         "css/css-borders/tentative/corner-shape/corner-shape-render-fuzzy.html?corner-top-left-shape=notch&border-radius=40px&border-width=10px&border-color=blue&border-left-color=yellow",
-         [
-          [
-           "/css/css-borders/tentative/corner-shape/corner-shape-any-ref.html?corner-top-left-shape=notch&border-radius=40px&border-width=10px&border-color=blue&border-left-color=yellow",
-           "=="
-          ]
-         ],
-         {
-          "fuzzy": [
-           [
-            null,
-            [
-             [
-              0,
-              200
-             ],
-             [
-              0,
-              550
-             ]
-            ]
-           ]
-          ]
-         }
-        ],
-        [
          "css/css-borders/tentative/corner-shape/corner-shape-render-fuzzy.html?corner-top-left-shape=scoop&corner-top-right-shape=scoop&border-radius=50%",
          [
           [
@@ -119570,6 +119539,19 @@
        {}
       ]
      ],
+     "flex-aspect-ratio-img-vert-lr.html": [
+      "c8075af6798c1a89d120da9a865443ae7c894466",
+      [
+       null,
+       [
+        [
+         "/css/reference/ref-filled-green-100px-square-only.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "flex-basis-001.html": [
       "85e3bc69c435da542f520bc0e5b9b0afe911f0ad",
       [
@@ -133872,6 +133854,19 @@
        {}
       ]
      ],
+     "test-synthetic-bold-2.html": [
+      "b7930c172c2ad57e370aa576c10befb0ff59b404",
+      [
+       null,
+       [
+        [
+         "/css/css-fonts/test-synthetic-bold-2-notref.html",
+         "!="
+        ]
+       ],
+       {}
+      ]
+     ],
      "test-synthetic-bold.html": [
       "c2337c0a3ce538a573eddec7e75ea191bc394ae0",
       [
@@ -133911,6 +133906,19 @@
        {}
       ]
      ],
+     "test-synthetic-italic-4.html": [
+      "fa1f815b4219dbfa355e0f9f67a54382af6a46bc",
+      [
+       null,
+       [
+        [
+         "/css/css-fonts/test-synthetic-italic-4-notref.html",
+         "!="
+        ]
+       ],
+       {}
+      ]
+     ],
      "test-synthetic-italic.html": [
       "3f6764ecfa3696310b1395037afbd6aa9c38b853",
       [
@@ -135183,6 +135191,19 @@
         {}
        ]
       ],
+      "multicol-gap-decorations-019.html": [
+       "c4f81bb95ea74e49f30f86fb5cf452094c801a4f",
+       [
+        null,
+        [
+         [
+          "/css/css-gaps/agnostic/gap-decorations-003-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
       "multicol-gap-intersections-018.html": [
        "b8f8e1619a0dc25c6824cb2cd441635d93885e06",
        [
@@ -216943,6 +216964,19 @@
         {}
        ]
       ],
+      "text-wrap-balance-word-spacing-001.html": [
+       "db27bba1285bfbbb7fd5382b3f08c813c1e9fe79",
+       [
+        null,
+        [
+         [
+          "/css/css-text/white-space/reference/text-wrap-balance-word-spacing-001-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
       "text-wrap-nowrap-001.html": [
        "94437df6deeb3ddcf73d7732c046901cb4b3842d",
        [
@@ -257620,7 +257654,7 @@
       ]
      ],
      "new-content-with-overflow-zoomed.html": [
-      "4ab9fa5a5751c1083afb69ca84f36cd9a1481fa5",
+      "6f0c8aac25db5eb5db3e734063d3edc313b32e80",
       [
        null,
        [
@@ -258204,7 +258238,7 @@
       ]
      ],
      "old-content-with-overflow-zoomed.html": [
-      "fa701deb3394514fa2a25a062bd5d6949034a3b7",
+      "41d08c253c62ee88eadcfc9eff5eb4b8ad9ec142",
       [
        null,
        [
@@ -258655,6 +258689,19 @@
       ]
      ],
      "scoped": {
+      "nested-scope.html": [
+       "9fff44e5e732edd1946adf414a8f23668022edda",
+       [
+        null,
+        [
+         [
+          "/css/css-view-transitions/scoped/nested-scope-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
       "new-content.html": [
        "7302f7c4f8ee4c22bee0fe286a7b2343af98603e",
        [
@@ -279484,19 +279531,6 @@
        ],
        {}
       ]
-     ],
-     "zero-width-filter.html": [
-      "5fd54652c658bf9592a60bdb140d14af0756d479",
-      [
-       null,
-       [
-        [
-         "/css/filter-effects/reference/green-100x100.html",
-         "=="
-        ]
-       ],
-       {}
-      ]
      ]
     },
     "mediaqueries": {
@@ -286331,7 +286365,20 @@
        {}
       ]
      ]
-    }
+    },
+    "visited-nested.html": [
+     "57220446c8688a3a12fcb36aeb00b904c901fd3d",
+     [
+      null,
+      [
+       [
+        "/css/visited-nested-ref.html",
+        "=="
+       ]
+      ],
+      {}
+     ]
+    ]
    },
    "custom-elements": {
     "form-associated": {
@@ -293883,6 +293930,32 @@
         ]
        },
        "text": {
+        "canvas.2d.fillText-FontFace.html": [
+         "1175a313b873b95923934adaf15558b1a7a02a43",
+         [
+          null,
+          [
+           [
+            "/html/canvas/offscreen/manual/text/empty-ref.html",
+            "!="
+           ]
+          ],
+          {}
+         ]
+        ],
+        "canvas.2d.fillText.html": [
+         "d6eed023072cd2b1827acdea5d592f29c5adf023",
+         [
+          null,
+          [
+           [
+            "/html/canvas/offscreen/manual/text/empty-ref.html",
+            "!="
+           ]
+          ],
+          {}
+         ]
+        ],
         "canvas.2d.offscreen.direction.html": [
          "e41a7666f75bee42ce4feff9f4a8949d45accf42",
          [
@@ -350447,6 +350520,10 @@
       "ca072086c415b058264e495c46cb4a692d8a0684",
       []
      ],
+     "test-synthetic-bold-2-notref.html": [
+      "ec5051519d703895e590e14c55b27b84ed164c35",
+      []
+     ],
      "test-synthetic-bold-notref.html": [
       "4a952acb46fb5b0f5681176ee3db32758413c48c",
       []
@@ -350459,6 +350536,10 @@
       "a0721426016c949369ae0114211136f45ce51b27",
       []
      ],
+     "test-synthetic-italic-4-notref.html": [
+      "d6f9050be302c30b7609dd19be3870453219539c",
+      []
+     ],
      "test-synthetic-italic-notref.html": [
       "3684f3ae804aa109f2da5188556cd3b36ffa2fc9",
       []
@@ -368127,6 +368208,10 @@
         "401e35e2f1f8c534487782df003078b1a53b6e36",
         []
        ],
+       "text-wrap-balance-word-spacing-001-ref.html": [
+        "d29d139614a7284b414eff1ae833591ec479fef9",
+        []
+       ],
        "text-wrap-nowrap-001-mis-ref.html": [
         "ca73318ecf3bae78643e5a754da54e8c8dc313d2",
         []
@@ -374320,7 +374405,7 @@
       []
      ],
      "content-with-overflow-zoomed-ref.html": [
-      "ae076d55787363d6690d5ec9947e7e8823feb56c",
+      "5bfb9d2fa9853bed336be9d930b0073e99b559c3",
       []
      ],
      "content-with-transform-ref.html": [
@@ -375003,6 +375088,10 @@
       "content-ref.html": [
        "1216fdfa85051ce2d19e97853b63f8ba70348209",
        []
+      ],
+      "nested-scope-ref.html": [
+       "804741cd6db993392ba8785e8c87f9c16894af41",
+       []
       ]
      },
      "scroller-child-abspos-ref.html": [
@@ -380943,7 +381032,11 @@
        }
       }
      }
-    }
+    },
+    "visited-nested-ref.html": [
+     "22f4ecf0d7bbcef307fd679ae0905f9b5318f690",
+     []
+    ]
    },
    "custom-elements": {
     "DIR_METADATA": [
@@ -381381,7 +381474,7 @@
      []
     ],
     "OWNERS": [
-     "144a162356513962eda1beaade31ac877a93dff2",
+     "59f1c0fee67e7cd65404d83927fb4bfb6f32535f",
      []
     ]
    },
@@ -396648,6 +396741,10 @@
          "1c2228a7acc341e1025673df937d0e5ab96ee353",
          []
         ],
+        "empty-ref.html": [
+         "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+         []
+        ],
         "text-direction-worker-inherit.js": [
          "a300048d10f59a8e42631edfd968d115f2e3b211",
          []
@@ -426467,7 +426564,7 @@
        []
       ],
       "basic-service-worker.js": [
-       "749cd5f2194ff54918032e50145078b2bed727e2",
+       "7175d655a49627614a7433de63a22fe93223711e",
        []
       ],
       "conditional-status.py": [
@@ -426479,7 +426576,7 @@
        []
       ],
       "counting-executor.py": [
-       "3511fe4905e2d8962175f0e4bc318a13c41c35f5",
+       "bc610b1fe10e85a663e1e4cddc4b77331fe6b4f6",
        []
       ],
       "executor.sub.html": [
@@ -427733,7 +427830,7 @@
      ],
      "tentative": {
       "helper.js": [
-       "c5b7de607470780a4b38a3c557452f6639bb2c38",
+       "744799d33fd7c268efac1c4e398142abdab3ee69",
        []
       ]
      }
@@ -428997,7 +429094,7 @@
      },
      "reftests": {
       "first-letter-ref.svg": [
-       "66f5c6d68280e1dd016c64351446dc1965d84627",
+       "72f866be1d9b175a675a5e13fb79c83c5c8699e4",
        []
       ],
       "font-size-scaling-ref.html": [
@@ -429033,7 +429130,7 @@
        []
       ],
       "opacity-ref.svg": [
-       "18c00ab332c73f5c033e37d4429872d07210ade4",
+       "7b4dbba15e7ddf525e5a132aee265cb01682c1db",
        []
       ],
       "text-bidi-controls-anchors-1-ref.svg": [
@@ -435207,7 +435304,7 @@
        []
       ],
       "fixtures_bidi.py": [
-       "0996821cfefee7573d3f352adc7a43166d6628f6",
+       "9942f729f652b32dc789355dae80a5e7f057828b",
        []
       ],
       "fixtures_http.py": [
@@ -468233,7 +468330,7 @@
       ]
      ],
      "summarizer-availability-available.tentative.https.window.js": [
-      "f569cb43b0fccc7a370d67447ac8545a492b4108",
+      "df4e161d6374346a339d473b82732a3e40a82988",
       [
        "ai/summarizer/summarizer-availability-available.tentative.https.window.html",
        {
@@ -468260,7 +468357,7 @@
       ]
      ],
      "summarizer-availability.tentative.https.window.js": [
-      "85282959f9ea22eb1bad45ef833f0698805bb8bd",
+      "91cb31295578bccc360c317236ba7917f63785fb",
       [
        "ai/summarizer/summarizer-availability.tentative.https.window.html",
        {
@@ -478025,7 +478122,7 @@
      ]
     ],
     "async-navigator-clipboard-change-event.tentative.https.html": [
-     "37e2e6a7bde3ef85de09691e5fa4fba4a644b310",
+     "bf32f4851b341ce08b2772b06c803dc02fdb24a6",
      [
       null,
       {
@@ -495662,6 +495759,13 @@
        {}
       ]
      ],
+     "position-try-ident-function.html": [
+      "4457c4f14f8413697b244fb16425e4baa7c5aab2",
+      [
+       null,
+       {}
+      ]
+     ],
      "position-try-initial-transition.html": [
       "163e2dc3b6d509ed757da87bb4728be7e7f645e0",
       [
@@ -500134,6 +500238,13 @@
         {}
        ]
       ],
+      "container-ident-function.html": [
+       "692efa757b31d85733329c721a2e17cf77aee54e",
+       [
+        null,
+        {}
+       ]
+      ],
       "container-inheritance.html": [
        "b4efa1d5231e2dcba3a0fe382dcd574ae3f4ddcc",
        [
@@ -500457,7 +500568,7 @@
        ]
       ],
       "font-relative-units.html": [
-       "3d676402e1e6b266ede4e0249bfae29f159d14f7",
+       "97f43ac466f3bcafb3c764af8524ca0a1601ce5b",
        [
         null,
         {}
@@ -505085,14 +505196,14 @@
       ]
      },
      "font-face-range-order.html": [
-      "b198a9fb572d38a87e25cc71e932821d8e96b16c",
+      "feae4803e7d3d007037b476c38a666d952ce7718",
       [
        null,
        {}
       ]
      ],
      "font-face-style-normal.html": [
-      "440661b82bbbd1f92c0a76ff650800ab24993cc7",
+      "baf34c0bc2028965cdf6ea795a8a222b45c8372c",
       [
        null,
        {}
@@ -505225,7 +505336,7 @@
       ]
      ],
      "generic-family-keywords-001.html": [
-      "bd39bac3ff8b3cda7e7eb60c75b0b5e6589f6110",
+      "17a635bd8e8e7dd3b8111a4127588e6e946d9b93",
       [
        null,
        {}
@@ -505239,7 +505350,7 @@
       ]
      ],
      "generic-family-keywords-003.html": [
-      "c787b59fb285dab2551c98026641b7f9dfdb84cd",
+      "4b79b58a5634609371ad4ccf502e474328eefc46",
       [
        null,
        {}
@@ -508853,7 +508964,7 @@
       ]
      },
      "grid-extrinsically-sized-mutations.html": [
-      "75600046e821099a19a0fa7b78670608fb626793",
+      "ea9eb7ca242549d6980f219119e229067123d41b",
       [
        null,
        {}
@@ -512424,14 +512535,14 @@
       ]
      ],
      "getclientrects-000.html": [
-      "be11ba99493c12d75e8dd42ed55ca998bbe66001",
+      "0464b69fed5da99f3de331057585cf14e9f85118",
       [
        null,
        {}
       ]
      ],
      "getclientrects-001.html": [
-      "48a31d901fa79c9ca9aa12b7b9e8f7c0f51af0f8",
+      "62a79d630d9ebe9345c18910ca0d364eed00c9e0",
       [
        null,
        {}
@@ -512718,7 +512829,7 @@
       ]
      ],
      "offsetProps-001.html": [
-      "a592c5a88d7ec31169c120f14dfbac14a8080510",
+      "d9747bfd10ca10aad6e5ec26565e23a20f71f194",
       [
        null,
        {}
@@ -515778,6 +515889,13 @@
        {}
       ]
      ],
+     "registered-property-ident-function.html": [
+      "343e472a8146cb1bfa6297bc221635354bcd207a",
+      [
+       null,
+       {}
+      ]
+     ],
      "registered-property-initial.html": [
       "2fa062f310e86220ce331a49fdcb4d5abb4094f0",
       [
@@ -516300,7 +516418,7 @@
       ]
      ],
      "line-spacing.html": [
-      "4854e984c442c06028f929e63e1a5b25839efcf6",
+      "51f00c7dcbb2cbec79f054ff0850290d317c2dba",
       [
        null,
        {}
@@ -519270,7 +519388,7 @@
         ]
        ],
        "shape-margin-001.html": [
-        "205241bbfd6c92a209487fb21185a713158e32e2",
+        "71eb743b81a28bb834a7f51661dcec2667387d31",
         [
          null,
          {}
@@ -519340,14 +519458,14 @@
         ]
        ],
        "shape-outside-circle-004.html": [
-        "c28172c333458876d2dc6db3694ae79b800d0d48",
+        "d5d429b20bd3570ff7cadfe7d9bb3beff55bafba",
         [
          null,
          {}
         ]
        ],
        "shape-outside-circle-005.html": [
-        "55a7f07acfc2611f2522474080606e70273cbc37",
+        "032a0a628ae1a192df9b5023e1f16ddd4c184f03",
         [
          null,
          {}
@@ -519438,14 +519556,14 @@
         ]
        ],
        "shape-outside-ellipse-004.html": [
-        "9456bec3d80aa35ad85a9f2017afcc4361f5faff",
+        "2cfefad4f81abd9ef8752c6770ef76310cc7962d",
         [
          null,
          {}
         ]
        ],
        "shape-outside-ellipse-005.html": [
-        "5c90827d2dda84f97e5ff4db1ab97d2f4f81c819",
+        "dd0942d28a5560304f360572d3a341b9598b7146",
         [
          null,
          {}
@@ -519515,7 +519633,7 @@
         ]
        ],
        "shape-outside-inset-003.html": [
-        "abb9972d0568a1e53676d587598355db477385ac",
+        "008fc772346e3d6d20ff06336ef5f9606f9b25df",
         [
          null,
          {}
@@ -519592,7 +519710,7 @@
         ]
        ],
        "shape-outside-polygon-004.html": [
-        "5edde7dfad3a22d0c7ffe2c54cab333b6f2567bb",
+        "7540e1a1bd8d4b43b1be8b1f311a4d3af48f63b7",
         [
          null,
          {}
@@ -519613,7 +519731,7 @@
         ]
        ],
        "shape-outside-shape-arguments-000.html": [
-        "2c2c959c8c4d68136b2d1042dd3d98bb08850c3e",
+        "542b8bcf7df06bc348015b50985059011cf640f4",
         [
          null,
          {}
@@ -520393,7 +520511,7 @@
       ]
      ],
      "keyword-sizes-for-intrinsic-contributions.html": [
-      "dc287b195907e2b114a4d035470dde94f4039b84",
+      "b42bd71b8e7ccc802ba11e3bf3384b3854a0c3fa",
       [
        null,
        {}
@@ -521684,14 +521802,14 @@
      ],
      "tentative": {
       "baseline-table.html": [
-       "1507bf656f48b5b944cdea12f68bd586d9c20f11",
+       "4ceeb4d3241f2677d121eb86a73291fb6c4567ec",
        [
         null,
         {}
        ]
       ],
       "baseline-td.html": [
-       "4090c5db64e37159164f4965f224859dfd44cc5c",
+       "d2eec93a44f16a8dc35ba0f99228fb217de96c82",
        [
         null,
         {}
@@ -521712,7 +521830,7 @@
        ]
       ],
       "colgroup-col.html": [
-       "40fbefee200cb280416733a04a335ebcc7764c8a",
+       "ba009de9996085f785e47d73aec6aa15081c3ea3",
        [
         null,
         {}
@@ -521775,7 +521893,7 @@
        ]
       ],
       "table-quirks.html": [
-       "af2a516c0e8a39d21496bd4698e14e86891ccae3",
+       "35c091095500e29112029d23a55a020a763631ef",
        [
         null,
         {}
@@ -524555,7 +524673,7 @@
        ]
       ],
       "trailing-space-position-001.html": [
-       "648ae23dccbeb5d79a30fd14506a6f4164b2f26f",
+       "9a23e80375d2b34692717ab95060c6edd78b763b",
        [
         null,
         {}
@@ -524583,7 +524701,7 @@
        ]
       ],
       "white-space-intrinsic-size-021.html": [
-       "9c63117d087932fb7c4788ff58c251d60dc1bf17",
+       "e1a8d03894c0893d7d5b552ae58f597d806cac90",
        [
         null,
         {}
@@ -530180,7 +530298,7 @@
       ]
      ],
      "cap-invalidation.html": [
-      "0becd0d093d680c1c18323da51fc39812c3709cd",
+      "c3d7f798e11350ad294f142fea7e242c659d649c",
       [
        null,
        {}
@@ -530741,6 +530859,13 @@
        {}
       ]
      ],
+     "sign-in-keyframes-with-relative-units.html": [
+      "5431c7c6241020f1c9af2808b8747d25f68f977e",
+      [
+       null,
+       {}
+      ]
+     ],
      "signed-zero.html": [
       "6ede4bbb0ecb67ea40ec26e1f41c516d2e9d3a88",
       [
@@ -531443,7 +531568,7 @@
       ]
      ],
      "group-animation-for-root-transition.html": [
-      "9c702663e62fb5d1adb156630da1cdeb3b6c9868",
+      "b7ad7598e8b1cc8c550e239c379a739add01dc39",
       [
        null,
        {}
@@ -531726,7 +531851,7 @@
       ]
      },
      "no-crash-set-exception.html": [
-      "bc0d764a590aaed95d2e6afe487f2477385a9c94",
+      "cc401b8bd6f91e7f98e628950827011908208585",
       [
        null,
        {}
@@ -531749,7 +531874,7 @@
       ]
      ],
      "no-raf-while-render-blocked.html": [
-      "a86fd14536229767b510d53741e86fd89e901828",
+      "36a923d84ede044a222f24b723301e411d27e343",
       [
        null,
        {
@@ -531893,7 +532018,7 @@
       ]
      },
      "paused-animation-at-end.html": [
-      "ae9176ea26c242a0d268310405f1202181dd5ad1",
+      "4b8148140bdde7922e63204040d698d881d56603",
       [
        null,
        {}
@@ -531920,6 +532045,13 @@
        {}
       ]
      ],
+     "pseudo-get-computed-style-clean-style.html": [
+      "be194a1d646692f548ba34823badc52b27d78f2d",
+      [
+       null,
+       {}
+      ]
+     ],
      "pseudo-get-computed-style.html": [
       "274e946b825951f0a941c9befe5059452568d9c4",
       [
@@ -532031,7 +532163,7 @@
       ]
      ],
      "transition-skipped-after-animation-started.html": [
-      "56c477a55f6e6e4dfc73ca40077dc0938ee6a1d7",
+      "a6bd29b6f85966224e60bcc6a8b73d933c3d71f8",
       [
        null,
        {}
@@ -532061,7 +532193,7 @@
       ]
      ],
      "view-transition-name-on-removed-element.html": [
-      "36beb308283a9a61a2289193b136fa7bed7f09d7",
+      "375553652abd72300334ca1ba13ce3ce5581e83c",
       [
        null,
        {}
@@ -532335,7 +532467,7 @@
        ]
       ],
       "text-input-block-size.optional.html": [
-       "680e0b6532b1a28bc94238b079fd2ab8417966d7",
+       "77d67aad9c913097a292b88c36da9b7b01e17178",
        [
         null,
         {}
@@ -533532,7 +533664,7 @@
       ]
      ],
      "getComputedStyle-insets-relpos-inline.html": [
-      "d5f197ee9bc6cd53ec636889773438391d698120",
+      "7d53f316396bb4d68bc6e600ff81b12a1fc38e56",
       [
        null,
        {}
@@ -534418,7 +534550,7 @@
       ]
      ],
      "getBoundingClientRect-shy.html": [
-      "b27a7884605f16cbac77e705d05f8ab519a39d9e",
+      "55349e93969af0d527da4bcb589804239164bafc",
       [
        null,
        {}
@@ -651836,7 +651968,7 @@
         ]
        ],
        "dialog-form-submission.html": [
-        "5934485087a267f917d9b47d5414a36c1065da6f",
+        "04255cc3c8040d09b913ae0b602f042ed756ab81",
         [
          null,
          {
@@ -657687,7 +657819,7 @@
         ]
        ],
        "on-dialog-behavior-request-close.tentative.html": [
-        "e505c917d7cf6e56107caa4ca40c2a9b49341f33",
+        "64b448655dd8955f411b0bc3bdb69e7c29dc24ac",
         [
          null,
          {
@@ -657696,7 +657828,7 @@
         ]
        ],
        "on-dialog-behavior.html": [
-        "041bc8536acca1d8c1949dd5cfca9b97c9b5a6ba",
+        "4cfb0b5a9254b249558380aa9084c30ba3f82356",
         [
          null,
          {
@@ -669937,14 +670069,14 @@
        ]
       ],
       "merror-001.html": [
-       "a9a021c2e991c82ea8a58a302d099a88b78f7a62",
+       "0551e32794862102d539e1ddb9394a768b8647e2",
        [
         null,
         {}
        ]
       ],
       "mphantom-001.html": [
-       "771688cf19416d78342e019450221102728942ae",
+       "5af588215537597166ff03cb48127a1e3fb5b572",
        [
         null,
         {}
@@ -701058,7 +701190,7 @@
      ]
     ],
     "svg.html": [
-     "6511afc8b000a2b415819cc88d2aa1b5fccb0cdc",
+     "60f24e32e04057e9dcac8401228ad91e07ed6607",
      [
       null,
       {}
@@ -704895,6 +705027,13 @@
        {}
       ]
      ],
+     "timeline-names-ident-function.html": [
+      "a1305bdc17c56b37790599443c317d5532b5bf01",
+      [
+       null,
+       {}
+      ]
+     ],
      "timeline-offset-in-keyframe-change-timeline.tentative.html": [
       "5a70820b881edf687961606f79153dab96d6ac2d",
       [
@@ -713626,7 +713765,7 @@
     "detection": {
      "tentative": {
       "racing-soft-navigations.html": [
-       "ba510b717e5232d0349fa7bd83d8e68e41edc7a9",
+       "3daa2d171825704c270448b7cccde834dbed87a8",
        [
         null,
         {
@@ -714923,7 +715062,7 @@
      "tentative": {
       "service-worker": {
        "basic.sub.https.html": [
-        "44937ea376f221105550f39f5d97c60b36fc4aed",
+        "7e4fd24423d96a1936b92eb1472d1ba42f0adb10",
         [
          "speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html?origin=cross-site&sw=fetch-handler",
          {
@@ -730484,14 +730623,14 @@
     "signatures": {
      "tentative": {
       "accept-signature.parser-inserted.html": [
-       "ccedc5ce4f9213e748611cb305892a87950978f6",
+       "0d688d39066ce720b61dead92714dca0ad85b138",
        [
         null,
         {}
        ]
       ],
       "accept-signature.window.js": [
-       "97e817e328c279149ac9668ed5014a30f811006d",
+       "291162c44594b95b50c8286d4d223c57136dde57",
        [
         "subresource-integrity/signatures/tentative/accept-signature.window.html",
         {
@@ -733053,7 +733192,7 @@
        ]
       ],
       "svg-pointer-events-bbox.html": [
-       "8db9149c231d1f4812b76610e3488ecd74787625",
+       "06d34fec54ba47a36690cd1be31d3c3f9b890b33",
        [
         null,
         {}
@@ -734179,7 +734318,7 @@
        ]
       ],
       "getcharnumatposition.html": [
-       "f17369b3742eddddbee792e0a0d983c24052f0ef",
+       "15f5dc68737a5b5ad7e75bf29ab5bcf3dbaaf482",
        [
         null,
         {}
@@ -767656,7 +767795,7 @@
       ]
      ],
      "arg_min_max.https.any.js": [
-      "e08a8cabd1a64e260c8d9b88526e3c98b286e302",
+      "f8e4d801056c31a1ec56d4e9686f16e2dd1eff25",
       [
        "webnn/conformance_tests/arg_min_max.https.any.html?cpu",
        {
@@ -770026,7 +770165,7 @@
       ]
      ],
      "expand.https.any.js": [
-      "2304cf9e9c917a9338b8dc1e6e3cbd75dfbd6c51",
+      "821c9b83ec269da21586682b005445f0a586bae6",
       [
        "webnn/conformance_tests/expand.https.any.html?cpu",
        {
@@ -770248,7 +770387,7 @@
       ]
      ],
      "gather.https.any.js": [
-      "c3bb635bdce62a534907952e88b6402b8f3d4a91",
+      "f0b75e1cf41a7510070343975f7411e2a7e64de6",
       [
        "webnn/conformance_tests/gather.https.any.html?cpu",
        {
@@ -770359,7 +770498,7 @@
       ]
      ],
      "gatherElements.https.any.js": [
-      "4482c36865fe474b37816cfe60560119b3584774",
+      "32299529f478f5b261b767b7f2ac9a71f04f01e0",
       [
        "webnn/conformance_tests/gatherElements.https.any.html?cpu",
        {
@@ -770470,7 +770609,7 @@
       ]
      ],
      "gatherND.https.any.js": [
-      "0377b777e4dda8fd28552fdb4541f389b37dc30e",
+      "ddf8626f17aef9dbfe6ab9df49c8568300a56c7a",
       [
        "webnn/conformance_tests/gatherND.https.any.html?cpu",
        {
@@ -774559,7 +774698,7 @@
       ]
      ],
      "pad.https.any.js": [
-      "02c9ec24508e07a66df5d7eae8e5e02d52f5575b",
+      "c2ba0e45b8f56fd4e4f75f780780c94cc4838df7",
       [
        "webnn/conformance_tests/pad.https.any.html?cpu",
        {
@@ -777427,7 +777566,7 @@
       ]
      ],
      "reshape.https.any.js": [
-      "05b8ea21e674796818f4c6143044a1beaaa3fb59",
+      "8345f09ae92587b9bfa3afab43214ac5567c2ab3",
       [
        "webnn/conformance_tests/reshape.https.any.html?cpu",
        {
@@ -777538,7 +777677,7 @@
       ]
      ],
      "reverse.https.any.js": [
-      "3cc2b9bc0cde11ec69d508086a11475687b2fd3a",
+      "8c76d04b1ee53d5b65de19b17e7d144eaf881a49",
       [
        "webnn/conformance_tests/reverse.https.any.html?cpu",
        {
@@ -778084,7 +778223,7 @@
       ]
      ],
      "scatterElements.https.any.js": [
-      "d2625630e07ce1b6a2f24fc9156bcf729f0c437f",
+      "d988719d84041839fdd6e890999c5e3e62d4e7e2",
       [
        "webnn/conformance_tests/scatterElements.https.any.html?cpu",
        {
@@ -778195,7 +778334,7 @@
       ]
      ],
      "scatterND.https.any.js": [
-      "e512e41ea3f922cafaef5f9747baa2e9e6c4d8d1",
+      "8505d143c76e03424af83079fc8339936a2361a7",
       [
        "webnn/conformance_tests/scatterND.https.any.html?cpu",
        {
@@ -779002,7 +779141,7 @@
       ]
      ],
      "slice.https.any.js": [
-      "7083bc09394a4f39c2c2570f1b7609bfff981ef5",
+      "6be61a9c253c853dd5aecc14b3dd78ff9f044a8d",
       [
        "webnn/conformance_tests/slice.https.any.html?cpu",
        {
@@ -779446,7 +779585,7 @@
       ]
      ],
      "split.https.any.js": [
-      "b9345f5d17996edf582b387d8247a2a5ca1e6835",
+      "c805be252573f1c241b17ba70eed09e7da6f422a",
       [
        "webnn/conformance_tests/split.https.any.html?cpu",
        {
@@ -780436,7 +780575,7 @@
       ]
      ],
      "tensor.https.any.js": [
-      "1a46c35b320e979a7d77a018990bbdf5abacaf28",
+      "03057a62ee864e9eb40506ef309dc6362bc44128",
       [
        "webnn/conformance_tests/tensor.https.any.html?cpu",
        {
@@ -780919,7 +781058,7 @@
       ]
      ],
      "tile.https.any.js": [
-      "822944b3e994df0de6a1db9cf5b98ee102e7cfbc",
+      "29a24871816e5266eaacae83092ec59013a443d0",
       [
        "webnn/conformance_tests/tile.https.any.html?cpu",
        {
@@ -781030,7 +781169,7 @@
       ]
      ],
      "transpose.https.any.js": [
-      "8a5afc1be2fb608d82276af89582933bca93336d",
+      "413b159f74379f132a7b584a73b923baa7cc82c6",
       [
        "webnn/conformance_tests/transpose.https.any.html?cpu",
        {
@@ -781141,7 +781280,7 @@
       ]
      ],
      "triangular.https.any.js": [
-      "bf1f51471de8e447d9ed98d04dc962cdadac2a5c",
+      "8006672f17d47da162864f0591028cabb1ed1c64",
       [
        "webnn/conformance_tests/triangular.https.any.html?cpu",
        {
@@ -781252,7 +781391,7 @@
       ]
      ],
      "where.https.any.js": [
-      "13291216a59674762750f940f73dc89afc9a37ae",
+      "21975b4610389067d4b1e09062601f66af59a78a",
       [
        "webnn/conformance_tests/where.https.any.html?cpu",
        {
@@ -836420,12 +836559,33 @@
      "bidi": {
       "browser": {
        "create_user_context": {
+        "accept_insecure_certs.py": [
+         "10e98febfbbfe0c9d7d489b1062d41565a619495",
+         [
+          null,
+          {}
+         ]
+        ],
         "create_user_context.py": [
          "f495498d0722131b728e1fb2c3fcb96afeb26b67",
          [
           null,
           {}
          ]
+        ],
+        "invalid.py": [
+         "9af6cdd5232244b46a3a3bc76ee4694c0704ba53",
+         [
+          null,
+          {}
+         ]
+        ],
+        "proxy.py": [
+         "fb59228e09034ba6738be2fdec06fddc2e1532bb",
+         [
+          null,
+          {}
+         ]
         ]
        },
        "get_client_windows": {
@@ -837534,7 +837694,7 @@
          ]
         ],
         "before_request_sent_cached.py": [
-         "e8119d29d9e259208a11bed7c330a9ecbca49886",
+         "6577b9fe08fe8b5c5d4874cec05e98eebc74cc30",
          [
           null,
           {}
@@ -837777,7 +837937,7 @@
          ]
         ],
         "response_completed_cached.py": [
-         "2c7ea02d6011e30ff4ef19050b0cf88681eea653",
+         "4c024f3c4bbd48b55f63cb5037dc33bd9a739e79",
          [
           null,
           {}
@@ -837793,7 +837953,7 @@
          ]
         ],
         "response_started_cached.py": [
-         "db34035fca15d5b7c2749c316ed6eb8905cabbe7",
+         "2b7e25bcd9f3473cf1a7662c8c543f0af7850d5c",
          [
           null,
           {}
@@ -839614,7 +839774,7 @@
         ]
        ],
        "merge.py": [
-        "4d36926fd3f063aed95fe5a7f477fd215686f698",
+        "32991b322a076f8020ad9e00cbdd27dc42fcb825",
         [
          null,
          {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-conditional/container-queries/font-relative-units.html b/third_party/blink/web_tests/external/wpt/css/css-conditional/container-queries/font-relative-units.html
index 3d67640..97f43ac 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-conditional/container-queries/font-relative-units.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-conditional/container-queries/font-relative-units.html
@@ -7,6 +7,7 @@
 <style>
   @import url("/fonts/ahem.css");
   :root { font-family: 'Ahem'; font-size: 10px; line-height: 10px; }
+  #log { font-family: sans-serif; }
   #em_container {
     container-type: inline-size;
     width: 100px;
@@ -100,19 +101,23 @@
   <div id="rlh_test"></div>
 </div>
 <script>
-  setup(() => assert_implements_size_container_queries());
+  setup(() => assert_implements_size_container_queries(), { explicit_done: true });
 
   const green = "rgb(0, 128, 0)";
-  test(() => assert_equals(getComputedStyle(em_test).color, green), "em relative inline-size");
-  test(() => assert_equals(getComputedStyle(rem_test).color, green), "rem relative inline-size");
-  test(() => assert_equals(getComputedStyle(ex_test).color, green), "ex relative inline-size");
-  test(() => assert_equals(getComputedStyle(rex_test).color, green), "rex relative inline-size");
-  test(() => assert_equals(getComputedStyle(ch_test).color, green), "ch relative inline-size");
-  test(() => assert_equals(getComputedStyle(rch_test).color, green), "rch relative inline-size");
-  test(() => assert_equals(getComputedStyle(ic_test).color, green), "ic relative inline-size");
-  test(() => assert_equals(getComputedStyle(ric_test).color, green), "ric relative inline-size");
-  test(() => assert_equals(getComputedStyle(lh_test).color, green), "lh relative inline-size");
-  test(() => assert_equals(getComputedStyle(rlh_test).color, green), "rlh relative inline-size");
-  test(() => assert_equals(getComputedStyle(cap_test).color, green), "cap relative inline-size");
-  test(() => assert_equals(getComputedStyle(rcap_test).color, green), "rcap relative inline-size");
+
+  document.fonts.ready.then(() => {
+    test(() => assert_equals(getComputedStyle(em_test).color, green), "em relative inline-size");
+    test(() => assert_equals(getComputedStyle(rem_test).color, green), "rem relative inline-size");
+    test(() => assert_equals(getComputedStyle(ex_test).color, green), "ex relative inline-size");
+    test(() => assert_equals(getComputedStyle(rex_test).color, green), "rex relative inline-size");
+    test(() => assert_equals(getComputedStyle(ch_test).color, green), "ch relative inline-size");
+    test(() => assert_equals(getComputedStyle(rch_test).color, green), "rch relative inline-size");
+    test(() => assert_equals(getComputedStyle(ic_test).color, green), "ic relative inline-size");
+    test(() => assert_equals(getComputedStyle(ric_test).color, green), "ric relative inline-size");
+    test(() => assert_equals(getComputedStyle(lh_test).color, green), "lh relative inline-size");
+    test(() => assert_equals(getComputedStyle(rlh_test).color, green), "rlh relative inline-size");
+    test(() => assert_equals(getComputedStyle(cap_test).color, green), "cap relative inline-size");
+    test(() => assert_equals(getComputedStyle(rcap_test).color, green), "rcap relative inline-size");
+    done();
+  })
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-aspect-ratio-img-vert-lr.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-aspect-ratio-img-vert-lr.html
new file mode 100644
index 0000000..c8075af
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-aspect-ratio-img-vert-lr.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#algo-main-item">
+<meta name="assert" content="Flex item should compute its main size from its definite cros size and aspect ratio.">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<style>
+.flexbox {
+  position: relative;
+  display: flex;
+  writing-mode: vertical-lr;
+  width: 100px;
+  align-items: start;
+}
+.flex-item{
+  width: 40px
+}
+.abspos {
+  width: 60px;
+  height: 100px; background-color: green;
+  position: absolute;
+  left: 40px;
+}
+</style>
+</head>
+</head>
+<body>
+  <p>Test passes if there is a filled green square.</p>
+  <div class="flexbox">
+    <img class="flex-item" src="support/20x50-green.png">
+    <div class="abspos"></div>
+  </div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-range-order.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-range-order.html
index b198a9f..feae4803 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-range-order.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-range-order.html
@@ -16,7 +16,7 @@
 font-stretch: 200% 50%;
 font-style: oblique 90deg -90deg;
 font-weight: 900 100;
-src: local(Ahem);
+src: url(/fonts/Ahem.ttf);
 }
 </style>
 <script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal-expected.txt
index 888da51..ce8c6b5 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal-expected.txt
@@ -1,11 +1,5 @@
 This is a testharness.js-based test.
-[FAIL] CSS Fonts: parsing 'normal' in the font-style descriptor
-  promise_test: Unhandled rejection with value: object "NetworkError: A network error occurred."
 [FAIL] CSS Fonts: parsing 'normal' in the font-style descriptor 1
-  promise_test: Unhandled rejection with value: object "NetworkError: A network error occurred."
-[FAIL] CSS Fonts: parsing 'normal' in the font-style descriptor 2
-  promise_test: Unhandled rejection with value: object "NetworkError: A network error occurred."
-[FAIL] CSS Fonts: parsing 'normal' in the font-style descriptor 3
-  promise_test: Unhandled rejection with value: object "NetworkError: A network error occurred."
+  assert_equals: 'oblique 0deg' serializes as 'normal' expected "normal" but got "oblique 0deg"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal.html
index 440661b..baf34c0 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-face-style-normal.html
@@ -14,22 +14,22 @@
 @font-face {
   font-family: test1;
   font-style: normal;
-  src: local(Ahem);
+  src: url(/fonts/Ahem.ttf);
 }
 @font-face {
   font-family: test2;
   font-style: oblique 0deg;
-  src: local(Ahem);
+  src: url(/fonts/Ahem.ttf);
 }
 @font-face {
   font-family: test3;
   font-style: oblique 0deg 10deg;
-  src: local(Ahem);
+  src: url(/fonts/Ahem.ttf);
 }
 @font-face {
   font-family: test4;
   font-style: normal 10deg;
-  src: local(Ahem);
+  src: url(/fonts/Ahem.ttf);
 }
 </style>
 <script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-001.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-001.html
index bd39bac..17a635b 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-001.html
@@ -24,12 +24,14 @@
     let ahem = document.getElementById('ahem');
     let ahem_expected_width = ahem.offsetWidth;
     kGenericFontFamilyKeywords.forEach(keyword => {
-      test(() => {
+      promise_test(async function() {
         let element = document.getElementById('test');
         element.setAttribute("style", `font-family: ${keyword};`);
         let expected_width = element.offsetWidth;
 
         // Insert the @font-face rules for quoted and unquoted keywords.
+        // NOTE that we have to wait for font loads again at each step,
+        // as new asynchronous loads may be initiated when the style changes.
         document.documentElement.insertAdjacentHTML('beforeend', `
 <style>
 @font-face {
@@ -43,10 +45,11 @@
   src: local(Ahem), url('/fonts/Ahem.ttf');
 }
 </style>`);
-
+        await document.fonts.ready;
         assert_equals(element.offsetWidth, expected_width, `unquoted ${keyword} does not match @font-face rule`);
 
         element.setAttribute("style", `font-family: "${keyword}";`);
+        await document.fonts.ready;
         assert_equals(element.offsetWidth, ahem_expected_width, `quoted ${keyword} matches  @font-face rule`);
       }, `@font-face matching for quoted and unquoted ${keyword}`);
     });
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-003.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-003.html
index c787b59f..4b79b58a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-003.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/generic-family-keywords-003.html
@@ -10,7 +10,7 @@
 <canvas id="canvas" width="400" height="150"></canvas>
 <script>
   setup({ explicit_done: true });
-  window.addEventListener("load", () => { document.fonts.ready.then(runTests); });
+  window.addEventListener("load", () => { document.fonts.load("25px Ahem").then(runTests); });
   function runTests() {
     const measured_text = "|||||";
     const canvas = document.getElementById("canvas");
@@ -19,7 +19,7 @@
     let ahem_expected_width = ctx.measureText(measured_text).width;
 
     kGenericFontFamilyKeywords.forEach(keyword => {
-      test(() => {
+      promise_test(async function() {
          ctx.font = `25px ${keyword}`;
          let expected_width = ctx.measureText(measured_text).width;
 
@@ -38,10 +38,12 @@
 }
 </style>`);
 
+        await document.fonts.load(`25px ${keyword}`);
         ctx.font = `25px ${keyword}`;
         let unquoted_width = ctx.measureText(measured_text).width;
         assert_equals(unquoted_width, expected_width, `unquoted ${keyword} does not match @font-face rule`);
 
+        await document.fonts.load(`25px "${keyword}"`);
         ctx.font = `25px "${keyword}"`;
         let quoted_width = ctx.measureText(measured_text).width;
         assert_equals(quoted_width, ahem_expected_width, `quoted ${keyword} matches  @font-face rule`);
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-extrinsically-sized-mutations.html b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-extrinsically-sized-mutations.html
index 7560004..ea9eb7c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-extrinsically-sized-mutations.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-extrinsically-sized-mutations.html
@@ -105,17 +105,21 @@
 </div>
 </body>
 <script>
-document.body.offsetHeight;
-mutateContent();
-document.body.offsetHeight;
+setup({ explicit_done: true });
+document.fonts.ready.then(() => {
+  document.body.offsetHeight;
+  mutateContent();
+  document.body.offsetHeight;
 
-let tests = document.querySelectorAll(".test");
-tests.forEach((element) => {
-  test(function() {
-    let expectedHeight = element.getAttribute("data-expected-height");
-    assert_equals(element.offsetHeight, Number(expectedHeight), "height");
+  let tests = document.querySelectorAll(".test");
+  tests.forEach((element) => {
+    test(function() {
+      let expectedHeight = element.getAttribute("data-expected-height");
+      assert_equals(element.offsetHeight, Number(expectedHeight), "height");
+    });
   });
-});
+  done();
+})
 </script>
 </html>
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-000.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-000.html
index be11ba99..0464b69 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-000.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-000.html
@@ -65,7 +65,10 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
-  test(()=> {
+  setup({ explicit_done: true });
+
+  document.fonts.ready.then(() => {
+    test(()=> {
       var span = document.querySelector("#horizontalTbLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -77,9 +80,9 @@
       assert_equals(rects[2].top, 70);
       assert_equals(rects[3].left, 300);
       assert_equals(rects[3].top, 50);
-  }, "horizontal-tb ltr");
+    }, "horizontal-tb ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#verticalLrLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -91,9 +94,9 @@
       assert_equals(rects[2].top, 150);
       assert_equals(rects[3].left, 100);
       assert_equals(rects[3].top, 250);
-  }, "vertical-lr ltr");
+    }, "vertical-lr ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#verticalRlLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -105,8 +108,9 @@
       assert_equals(rects[2].top, 150);
       assert_equals(rects[3].left, 120);
       assert_equals(rects[3].top, 250);
-  }, "vertical-rl ltr");
-  test(()=> {
+    }, "vertical-rl ltr");
+
+    test(()=> {
       var span = document.querySelector("#horizontalTbRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -118,8 +122,9 @@
       assert_equals(rects[2].top, 70);
       assert_equals(rects[3].left, 110);
       assert_equals(rects[3].top, 50);
-  }, "horizontal-tb rtl");
-  test(()=> {
+    }, "horizontal-tb rtl");
+
+    test(()=> {
       var span = document.querySelector("#verticalLrRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -131,8 +136,9 @@
       assert_equals(rects[2].top, 160);
       assert_equals(rects[3].left, 100);
       assert_equals(rects[3].top, 60);
-  }, "vertical-lr rtl");
-  test(()=> {
+    }, "vertical-lr rtl");
+
+    test(()=> {
       var span = document.querySelector("#verticalRlRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -144,5 +150,8 @@
       assert_equals(rects[2].top, 160);
       assert_equals(rects[3].left, 120);
       assert_equals(rects[3].top, 60);
-  }, "vertical-rl rtl");
+    }, "vertical-rl rtl");
+
+    done();
+  });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-001.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-001.html
index 48a31d90..62a79d6 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/getclientrects-001.html
@@ -102,7 +102,10 @@
   const GAP = 10;
   const TEXT_SIZE = 80;
 
-  test(()=> {
+  setup({ explicit_done: true });
+
+  document.fonts.ready.then(() => {
+    test(()=> {
       var span = document.querySelector("#horizontalTbLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -114,9 +117,9 @@
       assert_equals(rects[2].top, 70);
       assert_equals(rects[3].left, 300);
       assert_equals(rects[3].top, 50);
-  }, "horizontal-tb ltr");
+    }, "horizontal-tb ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#verticalLrLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -128,9 +131,9 @@
       assert_equals(rects[2].top, 150);
       assert_equals(rects[3].left, 100);
       assert_equals(rects[3].top, 250);
-  }, "vertical-lr ltr");
+    }, "vertical-lr ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#verticalRlLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -142,9 +145,9 @@
       assert_equals(rects[2].top, 150);
       assert_equals(rects[3].left, 120);
       assert_equals(rects[3].top, 250);
-  }, "vertical-rl ltr");
+    }, "vertical-rl ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#sidewaysLrLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -156,9 +159,9 @@
       assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE);
       assert_equals(rects[3].left, LEFT);
       assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE);
-  }, "sideways-lr ltr");
+    }, "sideways-lr ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#sidewaysRlLtr span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -170,9 +173,9 @@
       assert_equals(rects[2].top, TOP + COLUMN + GAP);
       assert_equals(rects[3].left, LEFT + LINE);
       assert_equals(rects[3].top, TOP + COLUMN * 2 + GAP * 2);
-  }, "sideways-rl ltr");
+    }, "sideways-rl ltr");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#horizontalTbRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -184,8 +187,9 @@
       assert_equals(rects[2].top, 70);
       assert_equals(rects[3].left, 110);
       assert_equals(rects[3].top, 50);
-  }, "horizontal-tb rtl");
-  test(()=> {
+    }, "horizontal-tb rtl");
+
+    test(()=> {
       var span = document.querySelector("#verticalLrRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -197,8 +201,9 @@
       assert_equals(rects[2].top, 160);
       assert_equals(rects[3].left, 100);
       assert_equals(rects[3].top, 60);
-  }, "vertical-lr rtl");
-  test(()=> {
+    }, "vertical-lr rtl");
+
+    test(()=> {
       var span = document.querySelector("#verticalRlRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -210,9 +215,9 @@
       assert_equals(rects[2].top, 160);
       assert_equals(rects[3].left, 120);
       assert_equals(rects[3].top, 60);
-  }, "vertical-rl rtl");
+    }, "vertical-rl rtl");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#sidewaysLrRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -224,9 +229,9 @@
       assert_equals(rects[2].top, TOP + COLUMN + GAP);
       assert_equals(rects[3].left, LEFT);
       assert_equals(rects[3].top, TOP + COLUMN + GAP + COLUMN + GAP);
-  }, "sideways-lr rtl");
+    }, "sideways-lr rtl");
 
-  test(()=> {
+    test(()=> {
       var span = document.querySelector("#sidewaysRlRtl span");
       var rects = span.getClientRects();
       assert_equals(rects.length, 4);
@@ -238,5 +243,8 @@
       assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE);
       assert_equals(rects[3].left, LEFT + LINE);
       assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE);
-  }, "sideways-rl rtl");
+    }, "sideways-rl rtl");
+
+    done();
+  });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/offsetProps-001.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/offsetProps-001.html
index a592c5a8..d9747bf 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/offsetProps-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/offsetProps-001.html
@@ -22,20 +22,28 @@
   </span>
 </div>
 <script>
-  test(()=> {
+setup({ explicit_done: true });
+document.fonts.ready.then(() => {
+  test(() => {
     assert_equals(outer.offsetWidth, 292);
     assert_equals(outer.offsetHeight, 40);
   }, "outer");
-  test(()=> {
+
+  test(() => {
     assert_equals(middle.offsetWidth, 150);
     assert_equals(middle.offsetHeight, 40);
   }, "middle");
-  test(()=> {
+
+  test(() => {
     assert_equals(inner1.offsetWidth, 64);
     assert_equals(inner1.offsetHeight, 24);
   }, "inner1");
-  test(()=> {
+
+  test(() => {
     assert_equals(inner2.offsetWidth, 110);
     assert_equals(inner2.offsetHeight, 40);
   }, "inner2");
+
+  done();
+});
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ruby/line-spacing.html b/third_party/blink/web_tests/external/wpt/css/css-ruby/line-spacing.html
index 4854e984c..51f00c7d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-ruby/line-spacing.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-ruby/line-spacing.html
@@ -23,11 +23,17 @@
   text-emphasis: 'x';
   text-emphasis-position: under left;
 }
+
+#log {
+  font-family: sans-serif;
+}
 </style>
 <body>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
+setup({ explicit_done: true });
+
 function renderRuby(source) {
   document.body.insertAdjacentHTML('afterbegin', source);
   const firstChild = document.body.firstChild;
@@ -45,120 +51,124 @@
   };
 }
 
-test(() => {
-  const {container, ruby, rt} = renderRubyAndGetBoxes(
-      '<div><ruby>base<rt>annotation</rt></ruby></div>');
-  assert_true(container.top <= rt.top);
-  assert_true(rt.top < ruby.top);
-}, 'Over ruby doesn\'t overflow the block');
+document.fonts.load("16px Ahem").then(() => {
+  test(() => {
+    const {container, ruby, rt} = renderRubyAndGetBoxes(
+        '<div><ruby>base<rt>annotation</rt></ruby></div>');
+    assert_true(container.top <= rt.top);
+    assert_true(rt.top < ruby.top);
+  }, 'Over ruby doesn\'t overflow the block');
 
-test(() => {
-  const {container, ruby, rt} = renderRubyAndGetBoxes(
-      '<div>before <span style="vertical-align:32px;">' +
-      '<ruby>base<rt>annotation</rt></ruby>' +
-       '</span> after</div>');
-  assert_true(container.top <= rt.top);
-  assert_true(rt.top < ruby.top);
-}, 'Over ruby + vertical-align doesn\'t overflow the block');
+  test(() => {
+    const {container, ruby, rt} = renderRubyAndGetBoxes(
+        '<div>before <span style="vertical-align:32px;">' +
+        '<ruby>base<rt>annotation</rt></ruby>' +
+        '</span> after</div>');
+    assert_true(container.top <= rt.top);
+    assert_true(rt.top < ruby.top);
+  }, 'Over ruby + vertical-align doesn\'t overflow the block');
 
-test(() => {
-  const {container, ruby, rt} = renderRubyAndGetBoxes(
-      '<div><ruby style="ruby-position:under">base<rt>annotation</rt></ruby></div>');
-  assert_true(container.bottom >= rt.bottom);
-  assert_true(rt.bottom > ruby.bottom);
-}, 'Under ruby doesn\'t overflow the block');
+  test(() => {
+    const {container, ruby, rt} = renderRubyAndGetBoxes(
+        '<div><ruby style="ruby-position:under">base<rt>annotation</rt></ruby></div>');
+    assert_true(container.bottom >= rt.bottom);
+    assert_true(rt.bottom > ruby.bottom);
+  }, 'Under ruby doesn\'t overflow the block');
 
-test(() => {
-  const {container, ruby, rt} = renderRubyAndGetBoxes(
-      '<div>before <ruby style="vertical-align:-32px; ruby-position:under">' +
-      'base<rt>annotation</rt></ruby> after</div>');
-  assert_true(container.bottom >= rt.bottom);
-  assert_true(rt.bottom > ruby.bottom);
-}, 'Under ruby + vertical-align doesn\'t overflow the block');
+  test(() => {
+    const {container, ruby, rt} = renderRubyAndGetBoxes(
+        '<div>before <ruby style="vertical-align:-32px; ruby-position:under">' +
+        'base<rt>annotation</rt></ruby> after</div>');
+    assert_true(container.bottom >= rt.bottom);
+    assert_true(rt.bottom > ruby.bottom);
+  }, 'Under ruby + vertical-align doesn\'t overflow the block');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div><ruby style="ruby-position:under">base<rt>annotation</rt></ruby>' +
-      '<div>n</div></div>');
-  const nextBlockBox = container.querySelector('div').getBoundingClientRect();
-  const rtBox = rt.getBoundingClientRect();
-  assert_greater_than_equal(nextBlockBox.top, rtBox.bottom);
-}, 'Under ruby doesn\'t overwrap with the next block');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div><ruby style="ruby-position:under">base<rt>annotation</rt></ruby>' +
+        '<div>n</div></div>');
+    const nextBlockBox = container.querySelector('div').getBoundingClientRect();
+    const rtBox = rt.getBoundingClientRect();
+    assert_greater_than_equal(nextBlockBox.top, rtBox.bottom);
+  }, 'Under ruby doesn\'t overwrap with the next block');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div><span>before</span><br><ruby>base<rt style="font-size:16px"' +
-      '>annotation</rt></ruby></div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  assert_true(ruby.getBoundingClientRect().top - firstLine.bottom > 1);
-}, 'Expand inter-lines spacing');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div><span>before</span><br><ruby>base<rt style="font-size:16px"' +
+        '>annotation</rt></ruby></div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    assert_true(ruby.getBoundingClientRect().top - firstLine.bottom > 1);
+  }, 'Expand inter-lines spacing');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div style="line-height:1.5;">' +
-      '<span>First line</span><br>' +
-      '<span>Second line</span><br>' +
-      '<ruby>base<rt style="font-size:50%">' +
-      'annotation</rt></ruby></div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  const secondLine = container.querySelectorAll('span')[1].getBoundingClientRect();
-  const rubyLine = ruby.getBoundingClientRect();
-  assert_approx_equals(secondLine.top - firstLine.top, rubyLine.top - secondLine.top, 1);
-}, 'Consume half-leading of the previous line');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div style="line-height:1.5;">' +
+        '<span>First line</span><br>' +
+        '<span>Second line</span><br>' +
+        '<ruby>base<rt style="font-size:50%">' +
+        'annotation</rt></ruby></div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    const secondLine = container.querySelectorAll('span')[1].getBoundingClientRect();
+    const rubyLine = ruby.getBoundingClientRect();
+    assert_approx_equals(secondLine.top - firstLine.top, rubyLine.top - secondLine.top, 1);
+  }, 'Consume half-leading of the previous line');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div style="line-height:1.5;">' +
-      '<span>First line</span><br>' +
-      '<span class="under_emp">Second line</span><br>' +
-      '<ruby>base<rt style="font-size:50%">' +
-      'annotation</rt></ruby></div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  const secondLine = container.querySelectorAll('span')[1].getBoundingClientRect();
-  const rubyLine = ruby.getBoundingClientRect();
-  const RUBY_EMPHASIS_SIZE = 8;
-  assert_greater_than_equal(rubyLine.top - secondLine.top,
-                            secondLine.top - firstLine.top + RUBY_EMPHASIS_SIZE);
-}, 'Don\'t Consume half-leading of the previous line with text-emphasis');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div style="line-height:1.5;">' +
+        '<span>First line</span><br>' +
+        '<span class="under_emp">Second line</span><br>' +
+        '<ruby>base<rt style="font-size:50%">' +
+        'annotation</rt></ruby></div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    const secondLine = container.querySelectorAll('span')[1].getBoundingClientRect();
+    const rubyLine = ruby.getBoundingClientRect();
+    const RUBY_EMPHASIS_SIZE = 8;
+    assert_greater_than_equal(rubyLine.top - secondLine.top,
+                              secondLine.top - firstLine.top + RUBY_EMPHASIS_SIZE);
+  }, 'Don\'t Consume half-leading of the previous line with text-emphasis');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div style="line-height:1.5;">' +
-      '<span>First line</span><br>' +
-      '<ruby style="ruby-position:under">base<rt style="font-size:50%">' +
-      'annotation</rt></ruby><br>' +
-      '<span>Third line</span></div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  const rubyLine = ruby.getBoundingClientRect();
-  const thirdLine = container.querySelectorAll('span')[1].getBoundingClientRect();
-  assert_approx_equals(rubyLine.top - firstLine.top, thirdLine.top - rubyLine.top, 1);
-}, 'Consume half-leading of the next line');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div style="line-height:1.5;">' +
+        '<span>First line</span><br>' +
+        '<ruby style="ruby-position:under">base<rt style="font-size:50%">' +
+        'annotation</rt></ruby><br>' +
+        '<span>Third line</span></div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    const rubyLine = ruby.getBoundingClientRect();
+    const thirdLine = container.querySelectorAll('span')[1].getBoundingClientRect();
+    assert_approx_equals(rubyLine.top - firstLine.top, thirdLine.top - rubyLine.top, 1);
+  }, 'Consume half-leading of the next line');
 
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div style="line-height:1.5;">' +
-      '<span>First line</span><br>' +
-      '<ruby style="ruby-position:under">base<rt style="font-size:50%">' +
-      'annotation</rt></ruby><br>' +
-      '<span class="over_emp">Third line</span>' +
-      '</div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  const rubyLine = ruby.getBoundingClientRect();
-  const thirdLine = container.querySelectorAll('span')[1].getBoundingClientRect();
-  const RUBY_EMPHASIS_SIZE = 8;
-  assert_greater_than_equal(thirdLine.top - rubyLine.top,
-                            rubyLine.top - firstLine.top + RUBY_EMPHASIS_SIZE);
-}, 'Don\'t Consume half-leading of the next line with text-emphasis');
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div style="line-height:1.5;">' +
+        '<span>First line</span><br>' +
+        '<ruby style="ruby-position:under">base<rt style="font-size:50%">' +
+        'annotation</rt></ruby><br>' +
+        '<span class="over_emp">Third line</span>' +
+        '</div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    const rubyLine = ruby.getBoundingClientRect();
+    const thirdLine = container.querySelectorAll('span')[1].getBoundingClientRect();
+    const RUBY_EMPHASIS_SIZE = 8;
+    assert_greater_than_equal(thirdLine.top - rubyLine.top,
+                              rubyLine.top - firstLine.top + RUBY_EMPHASIS_SIZE);
+  }, 'Don\'t Consume half-leading of the next line with text-emphasis');
 
-// crbug.com/336592423
-test(() => {
-  const {container, ruby, rt} = renderRuby(
-      '<div style="line-height:1;">' +
-      '<span style="display:inline-block; width:1em; height:4em; vertical-align:top"></span><br>' +
-      '<ruby>base<rt>annotation</rt></ruby></div>');
-  const firstLine = container.querySelector('span').getBoundingClientRect();
-  const rtBox = rt.getBoundingClientRect();
-  assert_greater_than_equal(rtBox.top, firstLine.bottom);
-}, 'An atomic-inline should not overlap with an annotation in the next line');
+  // crbug.com/336592423
+  test(() => {
+    const {container, ruby, rt} = renderRuby(
+        '<div style="line-height:1;">' +
+        '<span style="display:inline-block; width:1em; height:4em; vertical-align:top"></span><br>' +
+        '<ruby>base<rt>annotation</rt></ruby></div>');
+    const firstLine = container.querySelector('span').getBoundingClientRect();
+    const rtBox = rt.getBoundingClientRect();
+    assert_greater_than_equal(rtBox.top, firstLine.bottom);
+  }, 'An atomic-inline should not overlap with an annotation in the next line');
+
+  done();
+});
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html
index 205241b..71eb743 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html
@@ -32,7 +32,7 @@
         generate_tests( ParsingUtils.testShapeMarginInlineStyle,
                         ParsingUtils.buildTestCases(shape_margin_valid_unit_tests, "inline"));
         ParsingUtils.setupFonts();
-        document.fonts.ready.then(()=> {
+        document.fonts.load("10px Ahem").then(()=> {
             generate_tests( ParsingUtils.testShapeMarginComputedStyle,
                             ParsingUtils.buildTestCases(shape_margin_valid_unit_tests, "computed"));
             ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-004.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-004.html
index c28172c..d5d429b 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-004.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-004.html
@@ -23,7 +23,7 @@
             generate_tests( ParsingUtils.testInlineStyle,
                             ParsingUtils.buildPositionTests("circle", true, 'lengthUnit + inline', ParsingUtils.validUnits) );
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests( ParsingUtils.testComputedStyle,
                                 ParsingUtils.buildPositionTests("circle", true, 'lengthUnit + computed', ParsingUtils.validUnits) );
                 ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-005.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-005.html
index 55a7f07..032a0a6 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-005.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-005.html
@@ -21,7 +21,7 @@
             setup({explicit_done: true});
             generate_tests(ParsingUtils.testInlineStyle, ParsingUtils.buildRadiiTests('circle', 'lengthUnit + inline', ParsingUtils.validUnits));
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests(ParsingUtils.testComputedStyle, ParsingUtils.buildRadiiTests('circle', 'lengthUnit + computed', ParsingUtils.validUnits));
                 ParsingUtils.restoreFonts();
                 done();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html
index 9456bec3..2cfefad4 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html
@@ -23,7 +23,7 @@
             generate_tests( ParsingUtils.testInlineStyle,
                             ParsingUtils.buildPositionTests("ellipse", true, 'lengthUnit + inline', ParsingUtils.validUnits) );
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests( ParsingUtils.testComputedStyle,
                                 ParsingUtils.buildPositionTests("ellipse", true, 'lengthUnit + computed', ParsingUtils.validUnits) );
                 ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html
index 5c90827..dd0942d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html
@@ -21,7 +21,7 @@
             setup({explicit_done: true});
             generate_tests(ParsingUtils.testInlineStyle, ParsingUtils.buildRadiiTests('ellipse', 'lengthUnit + inline', ParsingUtils.validUnits));
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests(ParsingUtils.testComputedStyle,
                                 ParsingUtils.buildRadiiTests('ellipse', 'lengthUnit + computed', ParsingUtils.validUnits));
                 ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-003.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-003.html
index abb9972..008fc772 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-003.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-003.html
@@ -24,7 +24,7 @@
                 generate_tests(ParsingUtils.testInlineStyle, ParsingUtils.generateInsetRoundCases(unit, 'inline'));
            });
            ParsingUtils.setupFonts();
-           document.fonts.ready.then(()=> {
+           document.fonts.load("10px Ahem").then(()=> {
                 ParsingUtils.validUnits.forEach(function(unit) {
                     generate_tests(ParsingUtils.testComputedStyle, ParsingUtils.generateInsetRoundCases(unit, 'computed'));
                 });
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-004.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-004.html
index 5edde7dfa..7540e1a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-004.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-004.html
@@ -35,7 +35,7 @@
             generate_tests( ParsingUtils.testInlineStyle,
                             ParsingUtils.buildPolygonTests(arg_length_units_tests, 'inline') );
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests( ParsingUtils.testComputedStyle,
                                 ParsingUtils.buildPolygonTests(arg_length_units_tests, 'computed') );
                 ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html
index 2c2c959..542b8bc 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html
@@ -60,7 +60,7 @@
             generate_tests( ParsingUtils.testInlineStyle,
                             ParsingUtils.buildTestCases(basic_shape_args_tests, "inline") );
             ParsingUtils.setupFonts();
-            document.fonts.ready.then(()=> {
+            document.fonts.load("10px Ahem").then(()=> {
                 generate_tests( ParsingUtils.testComputedStyle,
                                 ParsingUtils.buildTestCases(basic_shape_args_tests, "computed") );
                 ParsingUtils.restoreFonts();
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/keyword-sizes-for-intrinsic-contributions.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/keyword-sizes-for-intrinsic-contributions.html
index dc287b19..b42bd71 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-sizing/keyword-sizes-for-intrinsic-contributions.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/keyword-sizes-for-intrinsic-contributions.html
@@ -111,5 +111,5 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/check-layout-th.js"></script>
 <script>
-checkLayout(".test");
+document.fonts.ready.then(() => checkLayout(".test"));
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-table.html b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-table.html
index 1507bf6..4ceeb4d3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-table.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-table.html
@@ -175,5 +175,5 @@
 </div>
 </main>
 <script>
-  checkLayout(".container");
+  document.fonts.ready.then(() => checkLayout(".container"));
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-td.html b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-td.html
index 4090c5db..d2eec93 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-td.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/baseline-td.html
@@ -119,6 +119,6 @@
 
 </main>
 <script>
-  checkLayout("table, .display-table");
+  document.fonts.ready.then(() => checkLayout("table, .display-table"));
 </script>
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/colgroup-col.html b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/colgroup-col.html
index 40fbefe..ba009de 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/colgroup-col.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/colgroup-col.html
@@ -118,5 +118,5 @@
 </main>
 
 <script>
-  checkLayout("table");
+  document.fonts.ready.then(() => checkLayout("table"));
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/table-quirks.html b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/table-quirks.html
index af2a516..35c0910 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/table-quirks.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/tentative/table-quirks.html
@@ -72,5 +72,5 @@
   test(_ => {
     assert_equals(window.getComputedStyle(document.querySelector("#notitalic")).fontStyle, "normal");
   }, "decoration does not propagate into table");
-  checkLayout("table");
+  document.fonts.ready.then(() => checkLayout("table"));
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/reference/text-wrap-balance-word-spacing-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/reference/text-wrap-balance-word-spacing-001-ref.html
new file mode 100644
index 0000000..d29d1396
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/reference/text-wrap-balance-word-spacing-001-ref.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>CSS Text level 4 Test: text-wrap-style should account for word-spacing</title>
+    <link rel="author" title="Yulun Wu">
+    <link rel="help" href="https://www.w3.org/TR/css-text-4/#word-spacing-property">
+    <link rel="help" href="https://www.w3.org/TR/css-text-4/#text-wrap-style">
+    <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <style>
+      body {
+        font-family: "Ahem";
+        font-size: 12px;
+        width: 500px;
+      }
+      .spacing-10 {
+        word-spacing: 10px;
+      }
+      .spacing-30 {
+        word-spacing: 30px;
+      }
+      .balance-first-line-spacing-30::first-line {
+        word-spacing: 30px;
+      }
+      .img1 {
+        background-color: green;
+        width: 20px;
+        height: 10px;
+      }
+      .img2 {
+        background-color: green;
+        width: 20px;
+        height: 10px;
+        margin-left: 30px;
+        margin-right: 30px;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="spacing-10">This passes if this div is one line </div>
+    <div class="spacing-30">This passes if this<br> div has the exact<br> correct breaking points</div>
+    <div class="spacing-30">This passes if this div has<br> the exact correct breaking<br> points</div>
+    <div class="balance-first-line-spacing-30">This passes if this div<br> has the exact correct breaking points</div>
+    <div>test<img class="img1">test <img class="img2"> test</div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/text-wrap-balance-word-spacing-001.html b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/text-wrap-balance-word-spacing-001.html
new file mode 100644
index 0000000..db27bba
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/text-wrap-balance-word-spacing-001.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>CSS Text level 4 Test: text-wrap-style should account for word-spacing</title>
+    <link rel="author" title="Yulun Wu">
+    <link rel="help" href="https://www.w3.org/TR/css-text-4/#word-spacing-property">
+    <link rel="help" href="https://www.w3.org/TR/css-text-4/#text-wrap-style">
+    <link rel="match" href="reference/text-wrap-balance-word-spacing-001-ref.html">
+    <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <style>
+      body {
+        font-family: "Ahem";
+        font-size: 12px;
+        width: 500px;
+      }
+      .spacing-10-balance {
+        word-spacing: 10px;
+        text-wrap-style: balance;
+      }
+      .spacing-30-balance {
+        word-spacing: 30px;
+        text-wrap-style: balance;
+      }
+      .spacing-30 {
+        word-spacing: 30px;
+      }
+      .balance-first-line-spacing-30 {
+        text-wrap-style: balance;
+      }
+      .balance-first-line-spacing-30::first-line {
+        word-spacing: 30px;
+      }
+      .img1 {
+        background-color: green;
+        width: 20px;
+        height: 10px;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="spacing-10-balance">This passes if this div is one line </div>
+    <div class="spacing-30-balance">This passes if this div has the exact correct breaking points</div>
+    <div class="spacing-30">This passes if this div has the exact correct breaking points</div>
+    <div class="balance-first-line-spacing-30">This passes if this div has the exact correct breaking points</div>
+    <div class="spacing-30-balance">test<img class="img1">test <img class="img1"> test</div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/trailing-space-position-001.html b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/trailing-space-position-001.html
index 648ae23..9a23e803 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/trailing-space-position-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/trailing-space-position-001.html
@@ -31,11 +31,15 @@
     <div class="pre-wrap">1234<span data-line="0" class="bg"> </span>567</div>
   </section>
 <script>
-for (let e of document.querySelectorAll('[data-line]')) {
-  test(() => {
-    let y = e.offsetTop;
-    assert_equals(Math.round(y / 10), parseInt(e.dataset.line));
-  });
-}
+setup({ explicit_done: true });
+document.fonts.ready.then(() => {
+  for (let e of document.querySelectorAll('[data-line]')) {
+    test(() => {
+      let y = e.offsetTop;
+      assert_equals(Math.round(y / 10), parseInt(e.dataset.line));
+    });
+  }
+  done();
+});
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-021.html b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-021.html
index 9c63117..e1a8d03 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-021.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-021.html
@@ -306,5 +306,5 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/check-layout-th.js"></script>
 <script>
-checkLayout(".container > div");
+document.fonts.ready.then(() => checkLayout(".container > div"));
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-values/cap-invalidation.html b/third_party/blink/web_tests/external/wpt/css/css-values/cap-invalidation.html
index 0becd0d0..c3d7f798 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-values/cap-invalidation.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-values/cap-invalidation.html
@@ -21,9 +21,11 @@
 
 <script>
   setup({ single_test: true });
-  let old_width = div.getBoundingClientRect().width;
-  document.documentElement.style.fontFamily = "sans-serif";
-  let new_width = div.getBoundingClientRect().width;
-  assert_not_equals(old_width, new_width, "expect the capital height of Ahem and sans-serif to be different");
-  done();
+  document.fonts.ready.then(() => {
+    let old_width = div.getBoundingClientRect().width;
+    document.documentElement.style.fontFamily = "sans-serif";
+    let new_width = div.getBoundingClientRect().width;
+    assert_not_equals(old_width, new_width, "expect the capital height of Ahem and sans-serif to be different");
+    done();
+  });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-values/tree-counting/sibling-index-keyframe-transform-dynamic.html b/third_party/blink/web_tests/external/wpt/css/css-values/tree-counting/sibling-index-keyframe-transform-dynamic.html
new file mode 100644
index 0000000..4dce7f6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-values/tree-counting/sibling-index-keyframe-transform-dynamic.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<title>CSS Values and Units Test: sibling-index() changing transform during @keyframes animation</title>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#tree-counting">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  @keyframes --anim {
+    from {
+      transform: translateX(calc(10px * sibling-index()));
+    }
+    to {
+      transform: none;
+    }
+  }
+  #target {
+    animation: --anim 1000s step-end;
+  }
+</style>
+<div>
+  <div id="rm"></div>
+  <div></div>
+  <div id="target"></div>
+</div>
+<script>
+  test(() => {
+    assert_equals(getComputedStyle(target).transform, "matrix(1, 0, 0, 1, 30, 0)");
+  }, "Initially, the sibling-index() is 3 for #target");
+
+  test(() => {
+    rm.remove();
+    assert_equals(getComputedStyle(target).transform, "matrix(1, 0, 0, 1, 20, 0)");
+  }, "Removing a preceding sibling of #target reduces the sibling-index()");
+
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-reconstruct-frame-tree-crash.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-reconstruct-frame-tree-crash.html
new file mode 100644
index 0000000..bff9a16
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-reconstruct-frame-tree-crash.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1966682">
+<script>
+  window.addEventListener("load", async () => {
+    const viewTransition = document.startViewTransition(async () => {})
+    await viewTransition.ready
+    const header = document.createElement("th")
+    document.documentElement.appendChild(header)
+    document.documentElement.getBoundingClientRect();
+    document.documentElement.className = "";
+  })
+</script>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/forms/text-input-block-size.optional.html b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/forms/text-input-block-size.optional.html
index 680e0b6..77d67aad 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/forms/text-input-block-size.optional.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/forms/text-input-block-size.optional.html
@@ -20,31 +20,35 @@
 <input id="verticalInput">
 
 <script>
-for (const inputType of ["text", "email", "password", "search", "tel", "url", "number"]) {
-    horizontalInput.type = inputType;
-    verticalInput.type = inputType;
-    for (const writingMode of ["vertical-lr", "vertical-rl", "sideways-lr", "sideways-rl"]) {
-        if (!CSS.supports(`writing-mode: ${writingMode}`))
-            continue;
-        test(t => {
-            verticalInput.style.writingMode = writingMode;
-            t.add_cleanup(() => {
-                verticalInput.removeAttribute("style");
-            });
+setup({ explicit_done: true });
+document.fonts.ready.then(() => {
+    for (const inputType of ["text", "email", "password", "search", "tel", "url", "number"]) {
+        horizontalInput.type = inputType;
+        verticalInput.type = inputType;
+        for (const writingMode of ["vertical-lr", "vertical-rl", "sideways-lr", "sideways-rl"]) {
+            if (!CSS.supports(`writing-mode: ${writingMode}`))
+                continue;
+            test(t => {
+                verticalInput.style.writingMode = writingMode;
+                t.add_cleanup(() => {
+                    verticalInput.removeAttribute("style");
+                });
 
-            const verticalRect = verticalInput.getBoundingClientRect();
-            assert_true(
-                verticalRect.width < verticalRect.height,
-                "input has correct aspect ratio for default input size"
-            );
+                const verticalRect = verticalInput.getBoundingClientRect();
+                assert_true(
+                    verticalRect.width < verticalRect.height,
+                    "input has correct aspect ratio for default input size"
+                );
 
-            const horizontalRect = horizontalInput.getBoundingClientRect();
-            assert_equals(
-                Math.round(verticalRect.width),
-                Math.round(horizontalRect.height),
-                "width of vertical input matches height of horizontal input"
-            );
-        }, `Test input[type=${inputType}] block-size in writing-mode: ${writingMode}`);
+                const horizontalRect = horizontalInput.getBoundingClientRect();
+                assert_equals(
+                    Math.round(verticalRect.width),
+                    Math.round(horizontalRect.height),
+                    "width of vertical input matches height of horizontal input"
+                );
+            }, `Test input[type=${inputType}] block-size in writing-mode: ${writingMode}`);
+        }
     }
-}
+    done();
+});
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom-view/getBoundingClientRect-shy.html b/third_party/blink/web_tests/external/wpt/css/cssom-view/getBoundingClientRect-shy.html
index b27a7884..55349e9 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom-view/getBoundingClientRect-shy.html
+++ b/third_party/blink/web_tests/external/wpt/css/cssom-view/getBoundingClientRect-shy.html
@@ -28,66 +28,72 @@
   return rect;
 }
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 0, 5);
-  assert_equals(rect.width, 50);
-}, "Range 0-5 should not include the hyphen.");
+setup({ explicit_done: true });
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 1, 5);
-  assert_equals(rect.width, 40);
-}, "Range 1-5 should not include the hyphen.");
+document.fonts.ready.then(() => {
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 0, 5);
+    assert_equals(rect.width, 50);
+  }, "Range 0-5 should not include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 0, 6);
-  assert_equals(rect.width, 60);
-}, "Range 0-6 should not include the hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 1, 5);
+    assert_equals(rect.width, 40);
+  }, "Range 1-5 should not include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 1, 6);
-  assert_equals(rect.width, 50);
-}, "Range 1-6 should not include the hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 0, 6);
+    assert_equals(rect.width, 60);
+  }, "Range 0-6 should not include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 0, 7);
-  assert_equals(rect.width, 70);
-}, "Range 0-7 should include the hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 1, 6);
+    assert_equals(rect.width, 50);
+  }, "Range 1-6 should not include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 1, 7);
-  assert_equals(rect.width, 60);
-}, "Range 1-7 should include the hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 0, 7);
+    assert_equals(rect.width, 70);
+  }, "Range 0-7 should include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test1.firstChild, 0, 8);
-  assert_equals(rect.width, 70);
-  assert_equals(rect.height, 20);
-}, "Range 0-8 should include the hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 1, 7);
+    assert_equals(rect.width, 60);
+  }, "Range 1-7 should include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test2.firstChild, 0, 8);
-  assert_equals(rect.width, 70);
-  assert_equals(rect.height, 20);
-}, "Range 0-8 should include only the first hyphen.");
+  test(() => {
+    const rect = getBoundingClientRect(test1.firstChild, 0, 8);
+    assert_equals(rect.width, 70);
+    assert_equals(rect.height, 20);
+  }, "Range 0-8 should include the hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test3.firstChild, 2, 3);
-  assert_equals(rect.width, 0);
-}, "Collapsed soft-hyphen should be 0 width.");
+  test(() => {
+    const rect = getBoundingClientRect(test2.firstChild, 0, 8);
+    assert_equals(rect.width, 70);
+    assert_equals(rect.height, 20);
+  }, "Range 0-8 should include only the first hyphen.");
 
-test(() => {
-  const rect = getBoundingClientRect(test3.firstChild, 6, 7);
-  assert_equals(rect.width, 10);
-}, "Rendered soft-hyphen should have a width.");
+  test(() => {
+    const rect = getBoundingClientRect(test3.firstChild, 2, 3);
+    assert_equals(rect.width, 0);
+  }, "Collapsed soft-hyphen should be 0 width.");
 
-test(() => {
-  const rect = getBoundingClientRect(test4.firstChild, 0, 1);
-  assert_equals(rect.width, 0);
-}, "Collapsed soft-hyphen in a span should be 0 width.");
+  test(() => {
+    const rect = getBoundingClientRect(test3.firstChild, 6, 7);
+    assert_equals(rect.width, 10);
+  }, "Rendered soft-hyphen should have a width.");
 
-test(() => {
-  const rect = getBoundingClientRect(test5.firstChild, 0, 1);
-  assert_equals(rect.width, 10);
-}, "Rendered soft-hyphen in a span should have a width.");
+  test(() => {
+    const rect = getBoundingClientRect(test4.firstChild, 0, 1);
+    assert_equals(rect.width, 0);
+  }, "Collapsed soft-hyphen in a span should be 0 width.");
+
+  test(() => {
+    const rect = getBoundingClientRect(test5.firstChild, 0, 1);
+    assert_equals(rect.width, 10);
+  }, "Rendered soft-hyphen in a span should have a width.");
+
+  done();
+});
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/getComputedStyle-insets-relpos-inline.html b/third_party/blink/web_tests/external/wpt/css/cssom/getComputedStyle-insets-relpos-inline.html
index d5f197ee..7d53f31 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom/getComputedStyle-insets-relpos-inline.html
+++ b/third_party/blink/web_tests/external/wpt/css/cssom/getComputedStyle-insets-relpos-inline.html
@@ -46,19 +46,6 @@
   </span>
   sit amet
 </div>
-<script>
-test(() => {
-  let style = getComputedStyle(target1);
-  assert_equals(style.left, '0px');
-  assert_equals(style.right, '140px');
-}, 'OOF with left fixed right auto in relpos inline container');
-
-test(() => {
-  let style = getComputedStyle(target2);
-  assert_equals(style.left, '140px');
-  assert_equals(style.right, '0px');
-}, 'OOF with left auto right fixed in relpos inline container');
-</script>
 
 <div class="ifc">
   Lorem
@@ -70,15 +57,33 @@
   sit amet
 </div>
 <script>
-test(() => {
-  let style = getComputedStyle(target3);
-  assert_equals(style.left, '0px');
-  assert_equals(style.right, '140px');
-}, 'OOF with left fixed right auto in relpos inline container with mixed directions');
+setup({ explicit_done: true });
 
-test(() => {
-  let style = getComputedStyle(target4);
-  assert_equals(style.left, '140px');
-  assert_equals(style.right, '0px');
-}, 'OOF with left auto right fixed in relpos inline container with mixed directions');
+document.fonts.ready.then(() => {
+  test(() => {
+    let style = getComputedStyle(target1);
+    assert_equals(style.left, '0px');
+    assert_equals(style.right, '140px');
+  }, 'OOF with left fixed right auto in relpos inline container');
+
+  test(() => {
+    let style = getComputedStyle(target2);
+    assert_equals(style.left, '140px');
+    assert_equals(style.right, '0px');
+  }, 'OOF with left auto right fixed in relpos inline container');
+
+  test(() => {
+    let style = getComputedStyle(target3);
+    assert_equals(style.left, '0px');
+    assert_equals(style.right, '140px');
+  }, 'OOF with left fixed right auto in relpos inline container with mixed directions');
+
+  test(() => {
+    let style = getComputedStyle(target4);
+    assert_equals(style.left, '140px');
+    assert_equals(style.right, '0px');
+  }, 'OOF with left auto right fixed in relpos inline container with mixed directions');
+
+  done();
+});
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/zero-width-filter.html b/third_party/blink/web_tests/external/wpt/css/filter-effects/zero-width-filter.html
deleted file mode 100644
index 5fd54652..0000000
--- a/third_party/blink/web_tests/external/wpt/css/filter-effects/zero-width-filter.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<title>zero width filters are ignored</title>
-<link rel="help" href="https://www.w3.org/TR/filter-effects-1/#filter-region">
-<link rel="match" href="reference/green-100x100.html">
-<svg width="200" height="200">
-  <defs>
-    <rect id="r" width="100" height="100" fill="green"/>
-    <filter x="0" y="0" id="f_off" width="0" height="0">
-      <feOffset/>
-    </filter>
-  </defs>
-  <rect width="100" height="100" fill="red"/>
-  <use style="filter:url(#f_off)" href="#r"/>
-</svg>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText-FontFace.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText-FontFace.html
new file mode 100644
index 0000000..1175a31
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText-FontFace.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+  <title>HTML 5 Canvas Test: fillText() after loading a FontFace and transferControlToOffscreen draws text</title>
+  <link rel="mismatch" href="empty-ref.html">
+  <meta charset="utf-8">
+  <meta name="assert" content="fillText() after loading a FontFace and transferControlToOffscreen() draws text">
+  <script src="/common/reftest-wait.js"></script>
+</head>
+<body onload="runTest()">
+<canvas id="c"></canvas>
+<script>
+  function runTest() {
+    let test_font = new FontFace(
+      "Lato-Medium",
+      "url(/fonts/Lato-Medium.ttf)"
+    );
+
+    test_font.load().then(font => {
+      const c = document.getElementById("c");
+      const ctx = c.transferControlToOffscreen().getContext("2d");
+      // This should also draw text without setting the font.
+      ctx.fillText("T", 5, 50);
+      takeScreenshot();
+    });
+  }
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText.html
new file mode 100644
index 0000000..d6eed02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/canvas.2d.fillText.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+  <title>HTML 5 Canvas Test: fillText() after transferControlToOffscreen draws text</title>
+  <link rel="mismatch" href="empty-ref.html">
+  <meta charset="utf-8">
+  <meta name="assert" content="fillText() after transferControlToOffscreen() draws text">
+  <script src="/common/reftest-wait.js"></script>
+</head>
+<body onload="runTest()">
+<canvas id="c"></canvas>
+<script>
+  function runTest() {
+    const c = document.getElementById("c");
+    const ctx = c.transferControlToOffscreen().getContext("2d");
+    ctx.fillText("T", 5, 50);
+    takeScreenshot();
+  }
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/empty-ref.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/empty-ref.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/text/empty-ref.html
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.any.worker-expected.txt
index fc2d49d..1cb7107 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.any.worker-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.any.worker-expected.txt
@@ -1,9 +1,7 @@
 This is a testharness.js-based test.
-Found 7 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
 [FAIL] UserActivation interface: existence and properties of interface object
   assert_false: UserActivation interface should not exist expected false got true
-[FAIL] PromiseRejectionEvent interface: attribute promise
-  assert_throws_js: getting property on prototype object must throw TypeError function "function () { [native code] }" did not throw
 [FAIL] WorkerGlobalScope interface: attribute onoffline
   assert_true: The prototype object must have a property "onoffline" expected true got false
 [FAIL] WorkerGlobalScope interface: attribute ononline
@@ -15,3 +13,4 @@
 [FAIL] Worker interface: attribute onmessageerror
   assert_true: The prototype object must have a property "onmessageerror" expected true got false
 Harness: the test ran to completion.
+
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML.+\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML.+\051-expected.txt"
index 291ec48..7b22798 100644
--- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML.+\051-expected.txt"
+++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML.+\051-expected.txt"
@@ -1,13 +1,11 @@
 This is a testharness.js-based test.
-Found 34 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 32 FAIL, 0 TIMEOUT, 0 NOTRUN.
 [FAIL] TextTrack interface: attribute inBandMetadataTrackDispatchType
   assert_true: The prototype object must have a property "inBandMetadataTrackDispatchType" expected true got false
 [FAIL] TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type
   assert_inherits: property "inBandMetadataTrackDispatchType" not found in prototype chain
 [FAIL] ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type
   assert_inherits: property "data" found on object expected in prototype chain
-[FAIL] CustomElementRegistry interface: existence and properties of interface object
-  assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() {\n                new interface_object();\n            }" did not throw
 [FAIL] ElementInternals interface: operation setValidity(optional ValidityStateFlags, optional DOMString, optional HTMLElement)
   assert_equals: property has wrong .length expected 0 but got 1
 [FAIL] VisibilityStateEntry interface: attribute name
@@ -20,8 +18,6 @@
   assert_own_property: expected property "duration" missing
 [FAIL] Location interface: stringifier
   assert_own_property: interface prototype object missing non-static operation expected property "toString" missing
-[FAIL] PromiseRejectionEvent interface: attribute promise
-  assert_throws_js: getting property on prototype object must throw TypeError function "function () { [native code] }" did not throw
 [FAIL] Navigator interface: operation taintEnabled()
   assert_own_property: interface prototype object missing non-static operation expected property "taintEnabled" missing
 [FAIL] Navigator interface: attribute oscpu
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html
index 5934485..04255cc 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html
@@ -21,22 +21,33 @@
   </form>
 </dialog>
 <script>
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  const button = document.querySelector('button');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
   dialog.showModal();
 
-  const button = document.querySelector('button');
   button.click();
 
   assert_false(dialog.open, "dialog should be closed now");
   assert_equals(dialog.returnValue, "default", "Return the default value");
 }, 'click the form submission button should close the dialog');
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  const button = document.querySelector('button');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
+  dialog.returnValue = "initial";
   dialog.showModal();
 
-  const button = document.querySelector('button');
   button.value = "sushi";
   button.click();
 
@@ -44,22 +55,50 @@
   assert_equals(dialog.returnValue, "sushi", "Return the updated value");
 }, 'form submission should return correct value');
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  const button = document.querySelector('button');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
+  dialog.returnValue = "initial";
   dialog.showModal();
 
-  const button = document.querySelector('button');
   button.removeAttribute("value");
   button.click();
   assert_false(dialog.open, "dialog should be closed now");
-  assert_not_equals(dialog.returnValue, undefined, "returnValue should not be set");
-}, "no returnValue when there's no result.");
+  assert_equals(dialog.returnValue, "initial", "returnValue should not be updated");
+}, "returnValue doesn't update when there's no value attribute.");
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  const button = document.querySelector('button');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
+  dialog.returnValue = "initial";
   dialog.showModal();
 
+  button.setAttribute("value", "");
+  button.click();
+  assert_false(dialog.open, "dialog should be closed now");
+  assert_equals(dialog.returnValue, "", "returnValue should be updated");
+}, "returnValue does update when there's an empty value attribute.");
+
+promise_test(async (t) => {
+  const dialog = document.querySelector('dialog');
   const button = document.querySelector('input');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
+  dialog.showModal();
+
   let expectedReturnValue = "";
   button.addEventListener('click', function(event) {
     expectedReturnValue = event.offsetX + "," + event.offsetY;
@@ -71,16 +110,26 @@
   assert_equals(dialog.returnValue, expectedReturnValue, "returnValue should be the offsets of the click");
 }, "input image button should return the coordinates");
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
   dialog.showModal();
   const button = document.getElementById('confirmImgBtn2');
   await test_driver.click(button);
   assert_false(dialog.open, "dialog should be closed now");
 }, "formmethod attribute should use dialog form submission");
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
   dialog.returnValue = "";
   dialog.showModal();
 
@@ -99,8 +148,13 @@
   assert_equals(dialog.returnValue, "", "dialog's returnValue remains the same");
 }, "closing the dialog while submitting should stop the submission");
 
-promise_test(async () => {
+promise_test(async (t) => {
   const dialog = document.querySelector('dialog');
+  t.add_cleanup(() => {
+    dialog.close();
+    dialog.returnValue = "";
+    button.removeAttribute("value");
+  });
   dialog.returnValue = undefined;
   dialog.showModal();
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior-request-close.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior-request-close.tentative.html
index e505c91..64b4486 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior-request-close.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior-request-close.tentative.html
@@ -74,6 +74,69 @@
           invokee.show();
           assert_true(invokee.open, "invokee.open");
           assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.setAttribute("value", "foo");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "foo");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to request-close with value (with command ${setType} as ${command}) open dialog closes and overrides returnValue`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.setAttribute("value", "");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to request-close with value (with command ${setType} as ${command}) open dialog closes and overrides returnValue when empty string`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.removeAttribute("value");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "test");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to request-close with value (with command ${setType} as ${command}) open dialog closes and doesn't override returnValue when missing value attribute`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
           if (typeof command === "string") {
             if (setType === "property") {
               containedinvoker.command = command;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior.html b/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior.html
index 041bc85..4cfb0b5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/the-button-element/command-and-commandfor/on-dialog-behavior.html
@@ -141,6 +141,69 @@
           invokee.show();
           assert_true(invokee.open, "invokee.open");
           assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.setAttribute("value", "foo");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "foo");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to close (with command ${setType} as ${command}) open dialog closes and overrides returnValue`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.setAttribute("value", "");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to close (with command ${setType} as ${command}) open dialog closes and overrides returnValue when empty string`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+          if (setType === "property") {
+            containedinvoker.command = command;
+          } else {
+            containedinvoker.setAttribute("command", command);
+          }
+          invokee.returnValue = "test";
+          containedinvoker.removeAttribute("value");
+          containedinvoker.click();
+          assert_equals(invokee.returnValue, "test");
+          assert_false(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
+        },
+        `invoking to close (with command ${setType} as ${command}) open dialog closes and doesn't override returnValue when missing value attribute`,
+      );
+
+      test(
+        function (t) {
+          t.add_cleanup(resetState);
+          invokee.show();
+          assert_true(invokee.open, "invokee.open");
+          assert_false(invokee.matches(":modal"), "invokee :modal");
           if (typeof command === "string") {
             if (setType === "property") {
               containedinvoker.command = command;
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/merror-001.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/merror-001.html
index a9a021c2..0551e32 100644
--- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/merror-001.html
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/merror-001.html
@@ -24,20 +24,25 @@
     </math>
   </div>
   <script>
-    test(function () {
+    setup({ explicit_done: true });
+    document.fonts.ready.then(() => {
+      test(function () {
         var style = window.getComputedStyle(document.getElementById("merror"));
         assert_equals(style.borderWidth, "1px");
         assert_equals(style.borderColor, "rgb(255, 0, 0)");
         assert_equals(style.borderStyle, "solid");
         assert_equals(style.backgroundColor, "rgb(255, 255, 224)");
-    }, "Default CSS properties on merror");
+      }, "Default CSS properties on merror");
 
-    test(function () {
+      test(function () {
         var merrorBox = document.getElementById("merror").getBoundingClientRect();
         var referenceBox = document.getElementById("reference").getBoundingClientRect();
         assert_equals(merrorBox.width, referenceBox.width + 2);
         assert_equals(merrorBox.height, referenceBox.height + 2);
-    }, "Bounding box is the same as mrow + 1px border");
+      }, "Bounding box is the same as mrow + 1px border");
+
+      done();
+    });
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mphantom-001.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mphantom-001.html
index 771688c..5af5882 100644
--- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mphantom-001.html
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mphantom-001.html
@@ -24,17 +24,22 @@
     </math>
   </div>
   <script>
-    test(function () {
+    setup({ explicit_done: true });
+    document.fonts.ready.then(() => {
+      test(function () {
         var style = window.getComputedStyle(document.getElementById("mphantom"));
         assert_equals(style.visibility, "hidden");
-    }, "Default CSS properties on mphantom");
+      }, "Default CSS properties on mphantom");
 
-    test(function () {
+      test(function () {
         var mphantomBox = document.getElementById("mphantom").getBoundingClientRect();
         var referenceBox = document.getElementById("reference").getBoundingClientRect();
         assert_equals(mphantomBox.width, referenceBox.width);
         assert_equals(mphantomBox.height, referenceBox.height);
-    }, "Bounding box is the same as mrow");
+      }, "Bounding box is the same as mrow");
+
+      done();
+    });
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/svg.html b/third_party/blink/web_tests/external/wpt/resize-observer/svg.html
index 6511afc8..60f24e3 100644
--- a/third_party/blink/web_tests/external/wpt/resize-observer/svg.html
+++ b/third_party/blink/web_tests/external/wpt/resize-observer/svg.html
@@ -1,4 +1,5 @@
 <!doctype html>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="./resources/resizeTestHelper.js"></script>
@@ -596,7 +597,8 @@
   guard = async_test('guard');
 }, "ResizeObserver implemented")
 
-test0()
+document.fonts.ready
+  .then(() => { return test0(); })
   .then(() => { return test1(); })
   .then(() => { return test2(); })
   .then(() => { return test3(); })
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection-second-softnav.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection-second-softnav.tentative.html
deleted file mode 100644
index 4d26bb9..0000000
--- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection-second-softnav.tentative.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="resources/soft-navigation-helper.js"></script>
-</head>
-<body>
-  <main id=main>
-    <div>
-      <a id=link><img src="/images/lcp-256x256.png" id="img"></a>
-    </div>
-  </main>
-  <script>
-    const link = document.getElementById("link");
-    let first_lcp_painted;
-    let second_lcp_painted;
-    (async () => {
-      await new Promise(r => { first_lcp_painted = r; });
-      addImageToMain("lcp-133x106.png", "no_lcp");
-      (new PerformanceObserver(second_lcp_painted)).observe({type: "element"});
-    })();
-    testSoftNavigation({
-      pushState: null,
-      clicks: 2,
-      addContent: async () => {
-        // Add an LCP element.
-        await new Promise(resolve => {
-          addImageToMain("lcp-100x50.png", "first_lcp" + counter);
-          (new PerformanceObserver(resolve)).observe({type: "element"});
-        });
-        if(counter) {
-          first_lcp_painted();
-          // Wait for the unrelated LCP to be painted.
-          await new Promise(r => { second_lcp_painted = r; });
-        }
-        const url = URL + "?" + counter;
-        history.pushState({}, '', url);
-      },
-      link: link,
-      validate: async () => {
-        const lcps = await getLcpEntries();
-        const ref_counter = counter-1;
-        assert_equals(lcps.length, 2 + ref_counter, "Got 2 LCP entries");
-        assert_equals(lcps[lcps.length - 1].id, "first_lcp" + ref_counter,
-                      "Got the first LCP");
-      },
-      test: "Second soft navigation image LCP discovered between user " +
-            "interaction and soft navigation detection are properly " +
-            "reported, while unrelated LCPs are ignored during that time. " +
-            "As a side effect, we also test element timing."});
-  </script>
-</body>
-</html>
-
-
-
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection.tentative.html
deleted file mode 100644
index 0de675d3..0000000
--- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-before-detection.tentative.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="resources/soft-navigation-helper.js"></script>
-</head>
-<body>
-  <main id=main>
-    <div>
-      <a id=link><img src="/images/lcp-256x256.png" id="img"></a>
-    </div>
-  </main>
-  <script>
-    const link = document.getElementById("link");
-    let first_lcp_painted;
-    let second_lcp_painted;
-    (async () => {
-      await new Promise(r => { first_lcp_painted = r; });
-      addImageToMain("lcp-133x106.png", "no_lcp");
-      (new PerformanceObserver(second_lcp_painted)).observe({type: "element"});
-    })();
-    testSoftNavigation({
-      pushState: null,
-      addContent: async () => {
-        // Add an LCP element.
-        await new Promise(resolve => {
-          addImageToMain("lcp-100x50.png", "first_lcp");
-          (new PerformanceObserver(resolve)).observe({type: "element"});
-        });
-        first_lcp_painted();
-        // Wait for the unrelated LCP to be painted.
-        await new Promise(r => { second_lcp_painted = r; });
-        const url = URL + "?" + counter;
-        history.pushState({}, '', url);
-      },
-      link: link,
-      validate: async () => {
-        const lcps = await getLcpEntries();
-        assert_equals(lcps.length, 2, "Got 2 LCP entries");
-        assert_equals(lcps[lcps.length - 1].id, "first_lcp", "Got the first LCP");
-      },
-      test: "Image LCP discovered between user interaction and soft " +
-            "navigation detection are properly reported, while unrelated " +
-            "LCPs are ignored during that time. As a side effect, we also " +
-            "test element timing."});
-  </script>
-</body>
-</html>
-
-
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection-second-softnav.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection-second-softnav.tentative.html
deleted file mode 100644
index bed27c3..0000000
--- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection-second-softnav.tentative.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="resources/soft-navigation-helper.js"></script>
-<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
-</head>
-<body>
-  <main id=main>
-    <div>
-      <a id=link><img src="/images/lcp-256x256.png" id="img"></a>
-    </div>
-  </main>
-  <script>
-    const link = document.getElementById("link");
-    let first_lcp_painted;
-    let second_lcp_painted;
-    (async () => {
-      await new Promise(r => { first_lcp_painted = r; });
-      addTextParagraphToMain("LOREM IPSUMR", "no lcp");
-      (new PerformanceObserver(second_lcp_painted)).observe({type: "element"});
-    })();
-    testSoftNavigation({
-      pushState: null,
-      clicks: 2,
-      addContent: async () => {
-        // Add an LCP element.
-        await new Promise(resolve => {
-          const p = addTextParagraphToMain("Lorem Ipsum", /*element_timing=*/"first_lcp" + counter);
-          p.id = "first_lcp" + counter;
-          (new PerformanceObserver(resolve)).observe({type: "element"});
-        });
-        if(counter) {
-          first_lcp_painted();
-          // Wait for the unrelated LCP to be painted.
-          await new Promise(r => { second_lcp_painted = r; });
-        }
-        const url = URL + "?" + counter;
-        history.pushState({}, '', url);
-      },
-      link: link,
-      validate: async () => {
-        const lcps = await getLcpEntries();
-        const ref_counter = counter-1;
-        assert_equals(lcps.length, 2 + ref_counter, "Got 2 LCP entries");
-        assert_equals(lcps[lcps.length - 1].id, "first_lcp" + ref_counter, "Got the first LCP");
-      },
-      test: "Second soft navigation text LCP discovered between user " +
-            "interaction and soft navigation detection are properly " +
-            "reported, while unrelated LCPs are ignored during that time. " +
-            "As a side effect, we also test element timing."});
-  </script>
-</body>
-</html>
-
-
-
-
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection.tentative.html
deleted file mode 100644
index 11e82e5..0000000
--- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/text-lcp-before-detection.tentative.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="resources/soft-navigation-helper.js"></script>
-<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
-</head>
-<body>
-  <main id=main>
-    <div>
-      <a id=link><img src="/images/lcp-256x256.png" id="img"></a>
-    </div>
-  </main>
-  <script>
-    const link = document.getElementById("link");
-    let first_lcp_painted;
-    let second_lcp_painted;
-    (async () => {
-      await new Promise(r => { first_lcp_painted = r; });
-      addTextParagraphToMain("LOREM IPSUMR", "no lcp");
-      (new PerformanceObserver(second_lcp_painted)).observe({type: "element"});
-    })();
-    testSoftNavigation({
-      pushState: null,
-      addContent: async () => {
-        // Add an LCP element.
-        await new Promise(resolve => {
-          const p = addTextParagraphToMain("Lorem Ipsum", /*element_timing=*/"first_lcp");
-          p.id = "first_lcp";
-          (new PerformanceObserver(resolve)).observe({type: "element"});
-        });
-        first_lcp_painted();
-        // Wait for the unrelated LCP to be painted.
-        await new Promise(r => { second_lcp_painted = r; });
-        const url = URL + "?" + counter;
-        history.pushState({}, '', url);
-      },
-      link: link,
-      validate: async () => {
-        const lcps = await getLcpEntries();
-        assert_equals(lcps.length, 2, "Got 2 LCP entries");
-        assert_equals(lcps[lcps.length - 1].id, "first_lcp", "Got the first LCP");
-      },
-      test: "Text LCP discovered between user interaction and soft " +
-            "navigation detection are properly reported, while unrelated " +
-            "LCPs are ignored during that time. As a side effect, we also " +
-            "test element timing."});
-  </script>
-</body>
-</html>
-
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html
index 8db9149c..06d34fec54 100644
--- a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html
@@ -131,25 +131,31 @@
   }, `${label} ${shouldContain ? 'contains' : 'does not contain'} point at (${point.x}, ${point.y})`);
 }
 
-pointsOnCircle1.forEach(point => hitTest(point, circle1, true));
-pointsNotOnCircle1.forEach(point => hitTest(point, circle1, false));
-pointsInsideBBoxOfCircle1.forEach(point => hitTest(point, group1, true, 'group1'));
+setup({ explicit_done: true });
 
-pointsOnCircle2.forEach(point => hitTest(point, circle2, true));
-pointsInsideBBoxOfCircle2.forEach(point => hitTest(point, circle2, true, 'bbox of circle2'));
+document.fonts.ready.then(() => {
+  pointsOnCircle1.forEach(point => hitTest(point, circle1, true));
+  pointsNotOnCircle1.forEach(point => hitTest(point, circle1, false));
+  pointsInsideBBoxOfCircle1.forEach(point => hitTest(point, group1, true, 'group1'));
 
-pointsOnText1.forEach(point => hitTest(point, text1, true));
-pointsOnTspan1.forEach(point => hitTest(point, tspan1, true));
-pointsNotOnText1.forEach(point => hitTest(point, text1, false));
-pointsInsideBBoxOfText1.forEach(point => hitTest(point, text1, true, 'bbox of text1'));
+  pointsOnCircle2.forEach(point => hitTest(point, circle2, true));
+  pointsInsideBBoxOfCircle2.forEach(point => hitTest(point, circle2, true, 'bbox of circle2'));
 
-pointsOnText2.forEach(point => hitTest(point, text2, true));
-pointsOnTspan2.forEach(point => hitTest(point, tspan2, true));
-pointsNotOnText2.forEach(point => hitTest(point, text2, false));
-pointsInsideBBoxOfText2.forEach(point => hitTest(point, text2, true, 'bbox of text2'));
+  pointsOnText1.forEach(point => hitTest(point, text1, true));
+  pointsOnTspan1.forEach(point => hitTest(point, tspan1, true));
+  pointsNotOnText1.forEach(point => hitTest(point, text1, false));
+  pointsInsideBBoxOfText1.forEach(point => hitTest(point, text1, true, 'bbox of text1'));
 
-pointsOnText3.forEach(point => hitTest(point, text3, true));
-pointsNotOnText3.forEach(point => hitTest(point, text3, false));
+  pointsOnText2.forEach(point => hitTest(point, text2, true));
+  pointsOnTspan2.forEach(point => hitTest(point, tspan2, true));
+  pointsNotOnText2.forEach(point => hitTest(point, text2, false));
+  pointsInsideBBoxOfText2.forEach(point => hitTest(point, text2, true, 'bbox of text2'));
 
-pointsOnImage1.forEach(point => hitTest(point, image1, true));
+  pointsOnText3.forEach(point => hitTest(point, text3, true));
+  pointsNotOnText3.forEach(point => hitTest(point, text3, false));
+
+  pointsOnImage1.forEach(point => hitTest(point, image1, true));
+
+  done();
+});
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/svg/text/reftests/first-letter-ref.svg b/third_party/blink/web_tests/external/wpt/svg/text/reftests/first-letter-ref.svg
index 66f5c6d..72f866be 100644
--- a/third_party/blink/web_tests/external/wpt/svg/text/reftests/first-letter-ref.svg
+++ b/third_party/blink/web_tests/external/wpt/svg/text/reftests/first-letter-ref.svg
@@ -1,4 +1,7 @@
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+  <metadata>
+    <h:link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+  </metadata>
   <style>
     text {
       font-family: Ahem;
diff --git a/third_party/blink/web_tests/external/wpt/svg/text/reftests/opacity-ref.svg b/third_party/blink/web_tests/external/wpt/svg/text/reftests/opacity-ref.svg
index 18c00ab..7b4dbba 100644
--- a/third_party/blink/web_tests/external/wpt/svg/text/reftests/opacity-ref.svg
+++ b/third_party/blink/web_tests/external/wpt/svg/text/reftests/opacity-ref.svg
@@ -1,5 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg">
-  <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+  <metadata>
+    <h:link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+  </metadata>
   <style>
     text {
       font-size: 50px;
diff --git a/third_party/blink/web_tests/external/wpt/svg/text/scripted/getcharnumatposition.html b/third_party/blink/web_tests/external/wpt/svg/text/scripted/getcharnumatposition.html
index f17369b..15f5dc68 100644
--- a/third_party/blink/web_tests/external/wpt/svg/text/scripted/getcharnumatposition.html
+++ b/third_party/blink/web_tests/external/wpt/svg/text/scripted/getcharnumatposition.html
@@ -26,47 +26,53 @@
   return p;
 }
 
-test(() => {
-  const element = document.querySelector('#htb');
-  assert_equals(element.getNumberOfChars(), 3);
-  const start = 40;
-  assert_equals(element.getCharNumAtPosition(newPoint(start - 10, 100)), -1);
-  assert_equals(element.getCharNumAtPosition(newPoint(start + 10, 100)), 0);
-  assert_equals(element.getCharNumAtPosition(newPoint(start + 30, 100)), 1);
-  assert_equals(element.getCharNumAtPosition(newPoint(start + 50, 100)), 2);
-  assert_equals(element.getCharNumAtPosition(newPoint(start + 70, 100)), -1);
-}, 'horizontal-tb');
+setup({ explicit_done: true });
 
-test(() => {
-  const element = document.querySelector('#vlr');
-  assert_equals(element.getNumberOfChars(), 3);
-  const start = 120;
-  assert_equals(element.getCharNumAtPosition(newPoint(40, start - 10)), -1);
-  assert_equals(element.getCharNumAtPosition(newPoint(40, start + 10)), 0);
-  assert_equals(element.getCharNumAtPosition(newPoint(40, start + 30)), 1);
-  assert_equals(element.getCharNumAtPosition(newPoint(40, start + 50)), 2);
-  assert_equals(element.getCharNumAtPosition(newPoint(40, start + 70)), -1);
-}, 'virtical-lr');
+document.fonts.ready.then(() => {
+  test(() => {
+    const element = document.querySelector('#htb');
+    assert_equals(element.getNumberOfChars(), 3);
+    const start = 40;
+    assert_equals(element.getCharNumAtPosition(newPoint(start - 10, 100)), -1);
+    assert_equals(element.getCharNumAtPosition(newPoint(start + 10, 100)), 0);
+    assert_equals(element.getCharNumAtPosition(newPoint(start + 30, 100)), 1);
+    assert_equals(element.getCharNumAtPosition(newPoint(start + 50, 100)), 2);
+    assert_equals(element.getCharNumAtPosition(newPoint(start + 70, 100)), -1);
+  }, 'horizontal-tb');
 
-test(() => {
-  const element = document.querySelector('#vrl');
-  assert_equals(element.getNumberOfChars(), 3);
-  const start = 120;
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
-}, 'virtical-rl');
+  test(() => {
+    const element = document.querySelector('#vlr');
+    assert_equals(element.getNumberOfChars(), 3);
+    const start = 120;
+    assert_equals(element.getCharNumAtPosition(newPoint(40, start - 10)), -1);
+    assert_equals(element.getCharNumAtPosition(newPoint(40, start + 10)), 0);
+    assert_equals(element.getCharNumAtPosition(newPoint(40, start + 30)), 1);
+    assert_equals(element.getCharNumAtPosition(newPoint(40, start + 50)), 2);
+    assert_equals(element.getCharNumAtPosition(newPoint(40, start + 70)), -1);
+  }, 'vertical-lr');
 
-test(() => {
-  const element = document.querySelector('#srl');
-  assert_equals(element.getNumberOfChars(), 3);
-  const start = 200;
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
-  assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
-}, 'sideways-rl');
+  test(() => {
+    const element = document.querySelector('#vrl');
+    assert_equals(element.getNumberOfChars(), 3);
+    const start = 120;
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
+  }, 'vertical-rl');
+
+  test(() => {
+    const element = document.querySelector('#srl');
+    assert_equals(element.getNumberOfChars(), 3);
+    const start = 200;
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
+    assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
+  }, 'sideways-rl');
+
+  done();
+});
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/accept_insecure_certs.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/accept_insecure_certs.py
new file mode 100644
index 0000000..10e98fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/accept_insecure_certs.py
@@ -0,0 +1,14 @@
+import pytest
+
+from .. import get_user_context_ids
+
+pytestmark = pytest.mark.asyncio
+
+
+@pytest.mark.parametrize("accept_insecure_certs", [True, False])
+async def test_create_context(bidi_session, create_user_context,
+        accept_insecure_certs):
+    user_context = await create_user_context(
+        accept_insecure_certs=accept_insecure_certs)
+    # TODO: check the parameter is respected.
+    assert user_context in await get_user_context_ids(bidi_session)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/invalid.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/invalid.py
new file mode 100644
index 0000000..9af6cdd5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/invalid.py
@@ -0,0 +1,68 @@
+import pytest
+
+import webdriver.bidi.error as error
+
+pytestmark = pytest.mark.asyncio
+
+
+# Even though the user context is not expected to be created, if the user agent
+# under the test does not support the parameter, the validation will not fail
+# and unexpected user context will be created and will not be closed. Using
+# `create_user_context` fixture guarantees the mistakenly created user context
+# is destroyed.
+
+@pytest.mark.parametrize("value", [42, "foo", {}, []])
+async def test_accept_insecure_certs_invalid_type(create_user_context, value):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(accept_insecure_certs=value)
+
+
+@pytest.mark.parametrize("value", [False, 42, "foo", []])
+async def test_proxy_invalid_type(create_user_context, value):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy=value)
+
+
+@pytest.mark.parametrize("value", [{}])
+async def test_proxy_invalid_value(create_user_context, value):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy=value)
+
+
+@pytest.mark.parametrize("value", [False, 42, {}, []])
+async def test_proxy_proxy_type_invalid_type(create_user_context, value):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy={
+                "proxyType": value
+            })
+
+
+async def test_proxy_proxy_type_invalid_value(create_user_context):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy={
+                "proxyType": "SOME_UNKNOWN_TYPE"
+            })
+
+
+async def test_proxy_proxy_type_manual_socks_version_without_socks_proxy(
+        create_user_context):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy={
+                "proxyType": "manual",
+                "socksVersion": 0
+            })
+
+
+async def test_proxy_proxy_type_manual_socks_proxy_without_socks_version(
+        create_user_context):
+    with pytest.raises(error.InvalidArgumentException):
+        await create_user_context(
+            proxy={
+                "proxyType": "manual",
+                "socksProxy": "127.0.0.1:1080"
+            })
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy.py
new file mode 100644
index 0000000..fb59228e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy.py
@@ -0,0 +1,74 @@
+import pytest
+
+from .. import get_user_context_ids
+
+pytestmark = pytest.mark.asyncio
+
+
+@pytest.fixture
+def create_user_context_with_proxy(bidi_session, create_user_context):
+    async def create_user_context_with_proxy(proxy):
+        user_context = await create_user_context(proxy=proxy)
+
+        assert user_context in await get_user_context_ids(bidi_session)
+
+        return user_context
+
+    return create_user_context_with_proxy
+
+
+async def test_system(create_user_context_with_proxy):
+    await create_user_context_with_proxy({
+        "proxyType": "system"
+    })
+    # TODO: check the proxy is actually set.
+
+
+async def test_autodetect(
+        create_user_context_with_proxy):
+    await create_user_context_with_proxy({
+        "proxyType": "autodetect"
+    })
+    # TODO: check the proxy is actually set.
+
+
+async def test_direct(create_user_context_with_proxy):
+    await create_user_context_with_proxy({
+        "proxyType": "direct"
+    })
+    # TODO: check the proxy is actually set.
+
+
+@pytest.mark.parametrize("ftpProxy", [None, "127.0.0.1:21"])
+@pytest.mark.parametrize("httpProxy", [None, "127.0.0.1:80"])
+@pytest.mark.parametrize("sslProxy", [None, "127.0.0.1:443"])
+@pytest.mark.parametrize("noProxy", [None, ["127.0.0.1"]])
+@pytest.mark.parametrize("socks", [None, {
+    "socksProxy": "127.0.0.1:1080",
+    "socksVersion": 5}])
+async def test_manual(create_user_context_with_proxy,
+        ftpProxy, httpProxy, sslProxy,
+        noProxy, socks):
+    proxy = {
+        "proxyType": "manual"
+    }
+
+    if ftpProxy is not None:
+        proxy["ftpProxy"] = ftpProxy
+
+    if httpProxy is not None:
+        proxy["httpProxy"] = httpProxy
+
+    if sslProxy is not None:
+        proxy["sslProxy"] = sslProxy
+
+    if noProxy is not None:
+        proxy["noProxy"] = noProxy
+
+    if socks is not None:
+        proxy.update(socks)
+
+    await create_user_context_with_proxy(proxy)
+    # TODO: check the proxy is actually set.
+
+# TODO: test "proxyType": "pac"
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/before_request_sent/before_request_sent_cached.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/before_request_sent/before_request_sent_cached.py
index e8119d2..6577b9f 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/before_request_sent/before_request_sent_cached.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/before_request_sent/before_request_sent_cached.py
@@ -105,7 +105,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events after reload, for the document and the stylesheet.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -172,7 +174,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events after reload, for the document and the stylesheet.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -264,7 +268,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect three events after reload, for the document and the 2 stylesheets.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -338,7 +344,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript file.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -446,7 +454,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript module.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -548,7 +558,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the image.
     wait = AsyncPoll(bidi_session, timeout=2)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_completed/response_completed_cached.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_completed/response_completed_cached.py
index 2c7ea02d..4c024f3 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_completed/response_completed_cached.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_completed/response_completed_cached.py
@@ -249,7 +249,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events after reload, for the document and the stylesheet.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -324,7 +326,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect three events after reload, for the document and the 2 stylesheets.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -418,7 +422,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect three events after reload, for the document and the 2 stylesheets.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -491,7 +497,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript file.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -622,7 +630,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript module.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -727,7 +737,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the image.
     wait = AsyncPoll(bidi_session, timeout=2)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_started/response_started_cached.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_started/response_started_cached.py
index db34035..2b7e25bcd 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_started/response_started_cached.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/network/response_started/response_started_cached.py
@@ -258,7 +258,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events after reload, for the document and the stylesheet.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -330,7 +332,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect three events after reload, for the document and the 2 stylesheets.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -427,7 +431,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect three events after reload, for the document and the 2 stylesheets.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -506,7 +512,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript file.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -629,7 +637,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the javascript module.
     wait = AsyncPoll(bidi_session, timeout=2)
@@ -731,7 +741,9 @@
     )
 
     # Reload the page.
-    await bidi_session.browsing_context.reload(context=top_context["context"])
+    await bidi_session.browsing_context.reload(
+        context=top_context["context"], wait="complete"
+    )
 
     # Expect two events, one for the document and one for the image.
     wait = AsyncPoll(bidi_session, timeout=2)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/classic/new_session/merge.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/classic/new_session/merge.py
index 4d36926..32991b322 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/classic/new_session/merge.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/classic/new_session/merge.py
@@ -41,42 +41,61 @@
 
 
 def test_merge_platform_name(new_session, add_browser_capabilities, target_platform):
+    always_match = add_browser_capabilities({})
+
+    if "platformName" in always_match:
+        platform_name = always_match.pop("platformName")
+    else:
+        platform_name = target_platform
+
+    # Remove pageLoadStrategy so we can use it to validate the merging of the firstMatch
+    # capabilities, and guarantee platformName isn't simply ignored.
+    if "pageLoadStrategy" in always_match:
+        del always_match["pageLoadStrategy"]
+
     response, _ = new_session({"capabilities": {
-        "alwaysMatch": add_browser_capabilities({"timeouts": {"script": 10}}),
+        "alwaysMatch": always_match,
         "firstMatch": [{
-            "platformName": target_platform.upper(),
+            "platformName": platform_name.upper(),
             "pageLoadStrategy": "none",
         }, {
-            "platformName": target_platform,
+            "platformName": platform_name,
             "pageLoadStrategy": "eager",
         }]}})
 
     value = assert_success(response)
 
-    assert value["capabilities"]["platformName"] == target_platform
+    assert value["capabilities"]["platformName"] == platform_name
     assert value["capabilities"]["pageLoadStrategy"] == "eager"
 
 
 def test_merge_browserName(new_session, add_browser_capabilities):
-    response, _ = new_session(
-        {"capabilities": {"alwaysMatch": add_browser_capabilities({})}})
-    value = assert_success(response)
+    always_match = add_browser_capabilities({})
 
-    browser_settings = {
-        "browserName": value["capabilities"]["browserName"],
-        "browserVersion": value["capabilities"]["browserVersion"],
-    }
+    if "browserName" in always_match:
+        browser_name = always_match.pop("browserName")
+    else:
+        response, _ = new_session(
+            {"capabilities": {"alwaysMatch": always_match}})
+        value = assert_success(response)
+        browser_name = value["capabilities"]["browserName"]
+
+    # Remove pageLoadStrategy so we can use it to validate the merging of the firstMatch
+    # capabilities, and guarantee browserName isn't simply ignored.
+    if "pageLoadStrategy" in always_match:
+        del always_match["pageLoadStrategy"]
 
     response, _ = new_session({"capabilities": {
-        "alwaysMatch": add_browser_capabilities({"timeouts": {"script": 10}}),
+        "alwaysMatch": always_match,
         "firstMatch": [{
-            "browserName": browser_settings["browserName"] + "invalid",
+            "browserName": browser_name + "invalid",
             "pageLoadStrategy": "none",
         }, {
-            "browserName": browser_settings["browserName"],
+            "browserName": browser_name,
             "pageLoadStrategy": "eager",
         }]}}, delete_existing_session=True)
+
     value = assert_success(response)
 
-    assert value["capabilities"]["browserName"] == browser_settings['browserName']
+    assert value["capabilities"]["browserName"] == browser_name
     assert value["capabilities"]["pageLoadStrategy"] == "eager"
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/support/fixtures_bidi.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/support/fixtures_bidi.py
index 0996821..9942f72 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/support/fixtures_bidi.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/support/fixtures_bidi.py
@@ -499,9 +499,11 @@
 
     user_contexts = []
 
-    async def create_user_context():
+    async def create_user_context(accept_insecure_certs=None, proxy=None):
         nonlocal user_contexts
-        user_context = await bidi_session.browser.create_user_context()
+        user_context = await bidi_session.browser.create_user_context(
+            accept_insecure_certs=accept_insecure_certs, proxy=proxy
+        )
         user_contexts.append(user_context)
 
         return user_context
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/font-face-style-normal-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/font-face-style-normal-expected.txt
deleted file mode 100644
index ce8c6b5..0000000
--- a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/font-face-style-normal-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-[FAIL] CSS Fonts: parsing 'normal' in the font-style descriptor 1
-  assert_equals: 'oblique 0deg' serializes as 'normal' expected "normal" but got "oblique 0deg"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy-expected.txt
new file mode 100644
index 0000000..5e5d347f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/external/wpt/webdriver/tests/bidi/browser/create_user_context/proxy-expected.txt
@@ -0,0 +1,5 @@
+This is a wdspec test.
+[FAIL] test_autodetect
+  webdriver.bidi.error.UnsupportedOperationException: unsupported operation (Autodetect proxy is not supported per user context)
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/wpt_internal/ai/language-model-api-prompt-multimodal.https.window.js b/third_party/blink/web_tests/wpt_internal/ai/language-model-api-prompt-multimodal.https.window.js
index eae27c26..7a45793 100644
--- a/third_party/blink/web_tests/wpt_internal/ai/language-model-api-prompt-multimodal.https.window.js
+++ b/third_party/blink/web_tests/wpt_internal/ai/language-model-api-prompt-multimodal.https.window.js
@@ -7,6 +7,8 @@
 const kPrompt = 'describe this';
 const kValidImagePath = 'resources/media/apple.jpg';
 const kValidAudioPath = 'resources/media/speech.mp3';
+const kValidSVGImagePath = 'resources/media/wikipedia-logo.svg';
+const kValidVideoPath = 'resources/media/video.mp4';
 
 function messageWithContent(prompt, type, value) {
   return [{
@@ -158,6 +160,64 @@
   assert_regexp_match(result, /<image>/);
 }, 'Prompt with ArrayBufferView image content');
 
+promise_test(async () => {
+  await ensureLanguageModel();
+  const newImage = new Image();
+  newImage.src = kValidSVGImagePath;
+  const session =
+      await LanguageModel.create({expectedInputs: [{type: 'image'}]});
+
+  const result =
+      await session.prompt(messageWithContent(
+        kPrompt, 'image', newImage));
+  assert_regexp_match(result, /<image>/);
+}, 'Prompt with HTMLImageElement image content (with SVG)');
+
+
+promise_test(async () => {
+  await ensureLanguageModel();
+  const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+  svg.setAttribute('width', '100');
+  svg.setAttribute('height', '100');
+  const svgImage =
+      document.createElementNS('http://www.w3.org/2000/svg', 'image');
+  svgImage.setAttribute('href', kValidImagePath);
+  svgImage.setAttribute('decoding', 'sync');
+  svg.appendChild(svgImage);
+  document.body.appendChild(svg);
+
+  // Must wait for the SVG and image to load first.
+  // TODO(crbug.com/417260923): Make prompt Api await the image to be loaded.
+  const {promise, resolve} = Promise.withResolvers();
+  svgImage.addEventListener('load', resolve);
+  await promise;
+  const session =
+      await LanguageModel.create({expectedInputs: [{type: 'image'}]});
+
+  const result =
+      await session.prompt(messageWithContent(
+        kPrompt, 'image', svgImage));
+  assert_regexp_match(result, /<image>/);
+}, 'Prompt with SVGImageElement image content');
+
+promise_test(async () => {
+  await ensureLanguageModel();
+  var video = document.createElement('video');
+  video.src = kValidVideoPath;
+  video.width = 1224;
+  video.height = 768;
+  // Video must have frames fetched. See crbug.com/417249941#comment3
+  await video.play();
+
+  const session =
+      await LanguageModel.create({expectedInputs: [{type: 'image'}]});
+
+  const result =
+      await session.prompt(messageWithContent(
+        kPrompt, 'image', video));
+  assert_regexp_match(result, /<image>/);
+}, 'Prompt with HTMLVideoElement image content');
+
 /*****************************************
  * Audio tests
  *****************************************/
diff --git a/third_party/blink/web_tests/wpt_internal/ai/resources/media/video.mp4 b/third_party/blink/web_tests/wpt_internal/ai/resources/media/video.mp4
new file mode 100644
index 0000000..ed139d6d
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/ai/resources/media/video.mp4
Binary files differ
diff --git a/third_party/blink/web_tests/wpt_internal/ai/resources/media/wikipedia-logo.svg b/third_party/blink/web_tests/wpt_internal/ai/resources/media/wikipedia-logo.svg
new file mode 100644
index 0000000..dc32f98
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/ai/resources/media/wikipedia-logo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [<!ENTITY st0 "opacity:.22;fill:#231F20;"><!ENTITY st1 "opacity:.34;fill:url(#SVGID_25_);"><!ENTITY st2 "opacity:.19;fill:#231F20;"><!ENTITY st3 "opacity:.18;fill:url(#SVGID_42_);"><!ENTITY st4 "opacity:.73;fill:#FFF;"><!ENTITY st5 "opacity:.35;fill:url(#SVGID_6_);"><!ENTITY st6 "opacity:.53;fill:#FFF;"><!ENTITY st7 "opacity:.43;fill:url(#SVGID_23_);"><!ENTITY st8 "opacity:.25;fill:#231F20;"><!ENTITY st9 "opacity:.53;fill:url(#SVGID_9_);"><!ENTITY st10 "opacity:.88;fill:#231F20;"><!ENTITY st11 "opacity:.31;fill:url(#SVGID_24_);"><!ENTITY st12 "fill:#232323;"><!ENTITY st13 "opacity:.68;fill:url(#SVGID_22_);"><!ENTITY st14 "opacity:.28;fill:#231F20;"><!ENTITY st15 "opacity:.38;fill:url(#SVGID_43_);"><!ENTITY st16 "fill:url(#SVGID_1_);"><!ENTITY st17 "fill:url(#SVGID_2_);"><!ENTITY st18 "fill:url(#SVGID_4_);"><!ENTITY st19 "opacity:.45;fill:url(#SVGID_5_);"><!ENTITY st20 "opacity:.17;fill:#FFF;"><!ENTITY st21 "opacity:.3;fill:#505050;"><!ENTITY st22 "fill:#616161;"><!ENTITY st23 "fill:#FFF;"><!ENTITY st24 "opacity:.2;fill:url(#SVGID_41_);"><!ENTITY st25 "opacity:.69;fill:url(#SVGID_3_);"><!ENTITY st26 "opacity:.45;fill:url(#SVGID_39_);"><!ENTITY st27 "opacity:.96;fill:url(#SVGID_10_);"><!ENTITY st28 "opacity:.3;fill:#FFF;"><!ENTITY st29 "fill:#9FA2A3;"><!ENTITY st30 "opacity:.73;fill:url(#SVGID_8_);"><!ENTITY st31 "fill:#6B6B6B;"><!ENTITY st32 "opacity:.36;fill:#231F20;"><!ENTITY st33 "opacity:.5;fill:url(#SVGID_7_);"><!ENTITY st34 "opacity:.1;fill:#232323;"><!ENTITY st35 "fill:url(#SVGID_11_);"><!ENTITY st36 "fill:url(#SVGID_12_);"><!ENTITY st37 "fill:url(#SVGID_13_);"><!ENTITY st38 "fill:url(#SVGID_14_);"><!ENTITY st39 "fill:url(#SVGID_15_);"><!ENTITY st40 "fill:url(#SVGID_16_);"><!ENTITY st41 "fill:url(#SVGID_17_);"><!ENTITY st42 "fill:url(#SVGID_18_);"><!ENTITY st43 "fill:url(#SVGID_19_);"><!ENTITY st44 "fill:url(#SVGID_20_);"><!ENTITY st45 "fill:url(#SVGID_21_);"><!ENTITY st46 "fill:url(#SVGID_26_);"><!ENTITY st47 "fill:url(#SVGID_27_);"><!ENTITY st48 "fill:url(#SVGID_28_);"><!ENTITY st49 "fill:url(#SVGID_29_);"><!ENTITY st50 "fill:url(#SVGID_30_);"><!ENTITY st51 "fill:url(#SVGID_31_);"><!ENTITY st52 "fill:url(#SVGID_33_);"><!ENTITY st53 "fill:url(#SVGID_34_);"><!ENTITY st54 "fill:url(#SVGID_35_);"><!ENTITY st55 "fill:url(#SVGID_36_);"><!ENTITY st56 "fill:url(#SVGID_37_);"><!ENTITY st57 "fill:url(#SVGID_38_);"><!ENTITY st58 "fill:url(#SVGID_40_);"><!ENTITY st59 "opacity:.1;fill:#231F20;"><!ENTITY st60 "opacity:.5;fill:#141414;"><!ENTITY st61 "opacity:.38;fill:#231F20;"><!ENTITY st62 "opacity:.83;fill:url(#SVGID_32_);">]><svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="103px" height="94px" viewBox="0 0 103 94"><title>Wikipedia logo version 2</title><radialGradient id="SVGID_1_" cx="244.5713" cy="-427.1392" r="68.6868" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="&st16;" d="M49.85,17.003c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.301-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.428,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.365-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.308-1.694-0.308-1.694s-0.492-2.747-0.535-3.304c0,0,1.475-0.126,3.686-0.775c2.3-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.572-0.64,1.354-0.863,1.763-0.953c0.41-0.089,1.281-0.17,2.092-0.134c0.813,0.038,1.266,0.112,1.594,0.291c0.327,0.178,0.356,0.61,0.356,0.61l-0.009,1.146c0,0-0.035,0.402,0.262,0.529c0,0,0.505,0.305,2.197,0.133c0,0,0.719-0.126,1.845-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.426-0.111,0.953-0.291,1.645-0.469c0.693-0.179,2.041-0.626,2.309-0.73c0.27-0.104,1.811-0.618,2.928-0.81c1.114-0.195,2.226-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.162,0.358,0.476,0.863,0.92,1.088c0.457,0.227,0.754,0.371,1.877,0.273c0,0,0.021-0.096-0.396-0.37c-0.417-0.277-0.991-0.701-0.991-0.701s-0.334-0.245-0.408-0.447c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.506-0.238c0.506-0.067,1.074-0.134,1.742-0.313c0.67-0.178,0.789-0.312,0.789-0.312l0.578,0.178c0,0,3.547,2.853,4.655,3.583l0.198-0.239c0,0,0.437,0.018,0.828,0.172c0.393,0.154,0.979,0.562,0.979,0.562s1.613,1.31,2.072,2.2l0.222,0.679l-0.102,0.161c0,0,0.919,1.307,2.096,2.602c0,0,1.229,1.664,1.689,2.09c0,0-0.108-0.399-0.203-0.849l0.339-0.226l0.2-0.144l0.617,0.259c3.575,4.811,6.435,10.424,8.144,16.328l-0.121,0.484l0.396,0.501c1.129,4.212,1.729,8.643,1.729,13.211c0,1.122-0.038,2.236-0.109,3.339l-0.304,0.511l0.226,0.555C99.95,72.645,78.057,93.131,51.38,93.131c-18.502,0-34.702-9.854-43.637-24.601l-0.102-0.365l-0.205-0.151c-3.387-5.742-5.682-12.205-6.595-19.104l0.212-0.524l-0.336-0.482c-0.213-1.892-0.322-3.812-0.322-5.758c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328C2.463,26.451,4.689,20.783,7.78,15.7l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717s0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.823,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.557-1.989c0,0-2.539-8.223-0.738-9.289c0,0,0.438-0.296,1.224-0.408l0.72-0.037c0.131-0.027,0.343,0.005,0.796,0.045c0.453,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/><radialGradient id="SVGID_2_" cx="197.6416" cy="-371.8613" r="0" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFF"/><stop offset=".4835" stop-color="#EAEAEB"/><stop offset=".9451" stop-color="#A9ABAE"/><stop offset="1" stop-color="#999B9E"/></radialGradient><path style="&st17;" d="M-16.122-14.641"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="456.2744" y1="510.1602" x2="502.7757" y2="582.9122" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#8A8A8A"/><stop offset=".5687" stop-color="#606060"/><stop offset=".5914" stop-color="#FFF"/><stop offset=".6116" stop-color="#585858"/><stop offset="1" stop-color="#303030"/></linearGradient><path style="&st25;" d="M82.447,79.307l0.451,0.168c-0.032,0.061-0.067,0.119-0.101,0.179c-0.864,1.573-0.936,1.927-1.36,2.253c-0.424,0.326-0.58,0.539-1.443,0.695c-0.865,0.156-1.771,1.175-1.771,1.175s-0.875,0.835-0.48,0.866c0.396,0.025,1.177-0.609,1.177-0.609s0.497-0.354,0.625-0.255c0.125,0.099-0.539,0.751-0.539,0.751s-1.161,1.176-2.479,1.982l-0.396,0.213c0,0,1.869-1.392,2.764-2.395c0,0,0.185-0.271-0.185,0.057c-0.369,0.325-1.332,0.821-1.741,0.821c-0.41,0,0.016-0.563,0.016-0.563s0.596-0.768,1.812-1.758c1.22-0.994,2.239-0.922,2.239-0.922s0.227,0.043,0.253-0.271c0.028-0.313,0.312-0.863,0.312-0.863s0.453-1.032,1.674-2.749c1.218-1.714,1.77-2.195,1.77-2.195s1.588-1.629,2.423-3.259c0,0,0.581-1.006-0.364-0.255c-0.951,0.753-2.211,1.7-3.44,2.014c-1.233,0.312-1.349-0.836-1.349-0.836s-0.271-1.884,1.049-3.344c1.188-1.316,2.492-1.273,3.684-1.415c1.188-0.144,2.21-1.571,2.21-1.571s0.82-0.922,1.289-3.797c0.218-1.337,0.067-2.244-0.144-2.818l0.021-0.647l-0.368-0.021c-0.078-0.106-0.135-0.153-0.135-0.153s-0.297-0.299-0.607-0.524c-0.313-0.227-0.692-0.649-1.063-1.457c0,0-1.019-2.11-0.792-5.156c0.227-3.047,2.762-2.762,2.762-2.762s1.475,0.143,1.76-0.298c0.283-0.438,0.553-0.993,0.649-2.223c0.101-1.233-0.396-2.408-0.396-2.408s-0.186-0.609-1.049-0.708c-0.863-0.1-1.051,0.169-1.051,0.169s-0.255,0.072-0.723,1.09c-0.471,1.021-0.75,1.488-1.602,1.702c-0.849,0.211-2.023,0.099-2.549-0.992c-0.515-1.072-1.757-3.693-2.351-5.772l0.084-0.735l-0.325-0.471c-0.063-0.396-0.117-0.846-0.13-1.236c-0.026-0.992-0.312-2.097-0.638-3.2c-0.326-1.106-1.459-2.972-1.672-3.399c-0.324-0.667-0.621-0.949-1.021-0.893c-0.396,0.056-0.339,0.056-0.513,0.056c-0.168,0-0.266,0.212-0.311,0.425c-0.042,0.212-0.375,1.315-1.104,1.812c-0.752,0.51-1.147,0.737-2.438,0.85c0,0-1.487,0.099-2.661-2.097C71,29.36,71.301,27.96,71.398,27.45c0.099-0.51,0.539-1.247,1.229-1.388c0.693-0.141,1.119-0.184,1.119-0.184s1.122-0.01,1.603-0.071c0.551-0.071,0.283-1.006,0.283-1.006s-0.361-2.371-2.348-4.318l-0.096-0.487l-0.756-0.381c-1.881-2.04-4.354-5.354-4.354-5.354s-1.105-1.048-0.17-2.493c0,0,0.438-0.963,1.742-0.792c0.419,0.081,0.457,0.123,0.818,0.199c0.481,0.099,1.008,0.225,1.478-0.398c0,0,0.438-0.792-0.271-1.812s-0.923-1.742-1.785-1.687c0,0-0.397-0.055-0.793,0.384C68.702,8.1,67.682,8.378,67.086,8.44c-0.679,0.071-2.252-0.528-3.156-2.082c-0.513-0.874-0.752-1.35-0.865-1.595l0.231-0.34l0.72,0.08c0.186,0.358,0.549,1.056,0.978,1.812c0.552,0.978,1.048,1.118,1.373,1.261c0.325,0.141,1.049-0.071,1.431-0.283c0.385-0.213,0.766-0.695,1.43-0.738c0.668-0.043,1.629,0.071,2.311,0.793c0.682,0.723,1.531,2.224,1.459,2.932c-0.068,0.708-0.111,1.403-1.035,1.699c-0.921,0.298-1.303,0.043-1.884-0.084c-0.581-0.128-0.864-0.072-1.104,0.211c-0.242,0.284-0.512,0.892-0.412,1.162c0.102,0.27,0.186,0.454,0.75,1.262c0.566,0.806,3.474,4.25,4.031,4.766l-0.152,0.698l0.968,0.176c0.625,0.724,1.358,1.668,1.687,2.263c0.493,0.907,0.752,2.337,0.779,3.002c0.025,0.666-0.299,0.963-0.299,0.963s-0.313,0.524-2.012,0.524c-1.517,0-1.614,0.297-1.614,0.297s-0.47,0.467-0.369,1.615c0.103,1.146,0.616,2.344,1.56,3.37c0.778,0.851,2.252-0.006,2.748-0.295c0.51-0.299,0.822-1.264,0.822-1.264s0.102-1.217,1.432-1.217c1.377,0,1.969,1.318,1.969,1.318s0.963,1.295,1.941,4.121c0.481,1.389,0.566,2.281,0.566,2.281l0.126,1.668l-0.513,0.892l0.732,0.312c0.135,0.541,0.348,1.24,0.686,2.044c0,0,1.008,2.381,1.443,3.286c0.44,0.906,0.896,0.766,1.264,0.808c0,0,0.85,0.113,1.16-0.282c0.313-0.398,0.61-1.092,0.61-1.092s0.663-1.812,2.138-1.657c1.475,0.156,1.84,1.092,2.096,2.168c0.256,1.074,0.313,3.229-0.479,4.545c-0.798,1.318-1.688,1.135-1.688,1.135s-1.813-0.17-2.225,0.213c-0.41,0.382-0.623,0.724-0.681,1.613c-0.058,0.894,0.026,2.336,0.751,4.08c0.631,1.523,1.146,1.361,1.432,1.728c0.284,0.368,1.188,1.204,1.104,3.272c-0.082,2.067-0.791,4.149-1.586,5.439c-0.793,1.288-1.997,2.053-1.997,2.053s-0.338,0.211-1.076,0.311c-0.735,0.102-1.784,0.086-2.534,0.513c-0.75,0.426-0.992,1.501-1.063,1.971c-0.069,0.468-0.112,1.529,0.921,1.413c1.034-0.109,2.577-1.4,2.577-1.4s1.486-1.104,1.685-0.752c0.199,0.354-0.636,1.784-0.636,1.784s-1.035,1.562-1.898,2.523c-0.709,0.791-1.641,1.868-2.431,3.102L82.447,79.307L82.447,79.307z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="425.2861" y1="502.9512" x2="445.7861" y2="598.6606" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="&st18;" d="M23.441,22.732c-0.007,0.008-0.013,0.018-0.021,0.025C23.428,22.75,23.434,22.74,23.441,22.732z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="421.0684" y1="504.3701" x2="441.068" y2="597.7433" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#A8A9AB"/><stop offset="1" stop-color="#636668"/></linearGradient><path style="&st19;" d="M38.188,89.707l0.163,0.01c-0.163-0.147-0.37-0.281-0.62-0.414c-0.699-0.371-3.731-2.375-4.669-3.009c-0.936-0.633-2.575-1.7-3.297-1.478c-0.554,0.172-0.475,0.394-0.804,0.556c-0.331,0.157-0.687,0.052-1.504-0.384c-0.818-0.434-1.424-0.725-3.02-2.239c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.277-0.646-1.676-2.333-2.994-3.691c-1.068-1.098-1.674-1.86-2.435-2.97l-0.566-0.661l0.007-0.166c-0.018-0.024-0.035-0.054-0.052-0.078c0,0-1.874-3.377-1.676-4.617c0,0,0.068-0.828,1.241-1.188c0.817-0.251,0.71,0.542,3.112,0.975c0,0,2.07,0.559,2.611-0.945c0.539-1.505-0.567-3.393-0.567-3.393s-1.449-2.656-3.244-2.758c-0.95-0.053-0.692,0.586-2.125,0.926c0,0-1.913,0.184-2.519-0.963c-0.734-1.389-1.04-2.969-1.015-4.022c0.022-1,0.054-1.079,0.119-1.371c0.045-0.206,0.192-0.582,0.254-1.128l-0.134-0.667l0.204-0.501c0.002-0.26-0.004-0.535-0.021-0.83c-0.091-1.66-0.213-4.221-0.437-5.71c-0.223-1.491-0.633-3.798-1.991-3.866c0,0-0.671-0.051-1.634,0.885c-0.884,0.856-1.684-0.708-1.728-1.663c-0.053-1.121,0.131-2.254,0.409-2.795c0.277-0.541,1.042-0.567,1.186-0.555c0.146,0.013,0.555,0.171,1.043,0.474c0.488,0.305,1.16,0.305,1.557-0.092c0.395-0.394,0.947-0.856,1.173-2.598c0.224-1.741,0.224-3.547,0.013-5.71l-0.225-0.484l1.339-0.289c-0.001-0.017-0.021-0.126-0.032-0.193c0-0.002,0-0.003,0-0.005c-0.002-0.017-0.005-0.032-0.007-0.049c-0.001-0.003-0.001-0.005-0.001-0.007c-0.003-0.019-0.007-0.038-0.009-0.057c0-0.001-0.001-0.001-0.001-0.003c-0.003-0.02-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.023-0.007-0.045-0.011-0.068c0-0.004-0.001-0.006-0.001-0.008c-0.002-0.022-0.006-0.045-0.008-0.066c-0.001-0.006-0.001-0.01-0.003-0.017c-0.002-0.023-0.005-0.046-0.009-0.069c-0.001-0.004-0.001-0.007-0.002-0.014c-0.003-0.026-0.007-0.05-0.011-0.076c0-0.002,0-0.004,0-0.005c-0.004-0.024-0.008-0.05-0.011-0.076c-0.001-0.007-0.001-0.01-0.003-0.017c-0.002-0.025-0.006-0.052-0.009-0.08c-0.001-0.005-0.001-0.011-0.002-0.021c-0.005-0.027-0.007-0.053-0.011-0.081c-0.001-0.006-0.002-0.013-0.002-0.019c-0.002-0.029-0.006-0.058-0.01-0.087c0-0.004-0.001-0.008-0.003-0.014c-0.002-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.016c-0.002-0.031-0.006-0.06-0.01-0.09c0-0.006-0.001-0.015-0.002-0.021c-0.004-0.03-0.006-0.061-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.03-0.006-0.062-0.01-0.093c0-0.006-0.002-0.012-0.002-0.019c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.002,0-0.005,0-0.009c-0.004-0.032-0.005-0.066-0.01-0.1c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.005-0.065-0.007-0.098c-0.001-0.007-0.001-0.014-0.001-0.021c-0.004-0.033-0.006-0.067-0.008-0.099c0-0.005,0-0.012-0.001-0.02c-0.002-0.033-0.006-0.069-0.007-0.102c0-0.003,0-0.007-0.001-0.01c-0.002-0.033-0.004-0.066-0.006-0.1c-0.001-0.006-0.001-0.011-0.001-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.021c-0.001-0.031-0.002-0.065-0.003-0.099c-0.001-0.006-0.001-0.013-0.001-0.021c-0.002-0.033-0.003-0.066-0.004-0.1c0-0.005,0-0.009,0-0.014c-0.001-0.032-0.001-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034,0-0.067-0.001-0.101c0-0.005,0-0.013,0-0.017c0-0.033,0-0.067,0-0.098c0-0.005,0.001-0.012,0.001-0.019c0-0.032,0-0.065,0.001-0.095c0-0.005,0-0.009,0-0.015c0.001-0.033,0.001-0.065,0.003-0.099c0.052-1.244,0.292-1.752,0.292-1.752l0.057-0.164c0,0,0.46-1.459,1.154-2.459l-0.013,0.024c0,0,0.446-0.738,1.231-0.814c0.785-0.079,1.004,0.156,1.371,0.2c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.002,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.004,0.075,0.006c0.014,0.001,0.027,0.003,0.041,0.003c0.021,0.001,0.043,0.003,0.064,0.004c0.014,0.001,0.028,0.002,0.041,0.003c0.02,0.001,0.04,0.001,0.058,0.003c0.014,0,0.026,0,0.042,0c0.019,0.001,0.036,0.002,0.055,0.002c0.013,0.001,0.026,0.001,0.038,0.002c0.017,0,0.034,0,0.051,0c0.011,0,0.023,0,0.034,0c0.017,0,0.033,0,0.05,0c0.011,0,0.02-0.001,0.032-0.001c0.016-0.001,0.031-0.001,0.046-0.001c0.011-0.001,0.02-0.001,0.03-0.002c0.016,0,0.03-0.002,0.045-0.002c0.009,0,0.019,0,0.026-0.001c0.016-0.001,0.03-0.002,0.044-0.004c0.006,0,0.016-0.001,0.023-0.002c0.015-0.001,0.029-0.001,0.044-0.003c0.006-0.001,0.013-0.002,0.02-0.002c0.016-0.002,0.03-0.004,0.045-0.008c0.004,0,0.008,0,0.013-0.001c0.019-0.002,0.036-0.005,0.052-0.008l0,0c0.035-0.006,0.068-0.014,0.098-0.021c0,0,0,0,0.002-0.002c0.012-0.002,0.026-0.005,0.039-0.01c0.002,0,0.004,0,0.008-0.001c0.009-0.003,0.019-0.006,0.028-0.009c0.004,0,0.007-0.002,0.01-0.003c0.009-0.003,0.019-0.007,0.026-0.009c0.002-0.001,0.005-0.002,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.004-0.001,0.006-0.003,0.009-0.003c0.007-0.004,0.014-0.005,0.02-0.009c0.003-0.001,0.006-0.003,0.008-0.004c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.001,0.003-0.002,0.005-0.004c0.005-0.003,0.01-0.005,0.016-0.007c0.002-0.002,0.003-0.002,0.006-0.004c0.004-0.001,0.008-0.005,0.012-0.007c0.002-0.001,0.004-0.001,0.005-0.003c0.004-0.002,0.008-0.006,0.012-0.008c0.001,0,0.003-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.011-0.007c0.001-0.001,0.001-0.001,0.002-0.003c0.004-0.001,0.006-0.005,0.008-0.008h0.002c0.003-0.002,0.005-0.005,0.008-0.007l0.001-0.001c0.002-0.002,0.004-0.004,0.006-0.006s0.002-0.002,0.003-0.003c0.001,0,0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.003-0.001,0.003-0.004,0.003-0.004c0.328-0.241,0.593-0.516,0.797-0.775c0.014-0.017,0.026-0.033,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.015,0.026-0.031,0.038-0.048c0.002-0.004,0.006-0.008,0.007-0.011c0.012-0.018,0.025-0.033,0.038-0.05c0.001,0,0.001,0,0.001-0.001c0.039-0.054,0.075-0.109,0.109-0.159c0-0.002,0.002-0.004,0.003-0.007c0.01-0.016,0.02-0.029,0.03-0.044c0.001-0.004,0.005-0.007,0.007-0.011c0.008-0.014,0.017-0.029,0.024-0.042c0.003-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.024-0.042l0.001-0.002c0.017-0.027,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.007-0.012c0.005-0.009,0.01-0.021,0.016-0.03c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.01-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.011-0.023c0.004-0.007,0.009-0.016,0.012-0.022c0.004-0.007,0.007-0.014,0.011-0.021c0.002-0.006,0.007-0.011,0.01-0.018c0.066-0.13,0.097-0.207,0.097-0.207c0.594-1.459,0.052-2.935-0.21-3.224c-0.32-0.354-1.041-0.883-1.041-0.883s-0.426-0.357-1.08-0.025c-0.521,0.264-0.711,0.201-0.711,0.201c-0.024-0.498,0.149-1.432,0.491-2.263c0.341-0.829,1.075-2.253,1.075-2.253s1.047-1.792,1.467-2.89c0.418-1.102,0.415-1.94,0.415-1.94s-0.795-1.019-0.91-1.177c-0.115-0.158-0.272-0.223-0.272-0.223c-0.205,0.078-0.345,0.103-0.345,0.103l0.169-0.14c0,0,0.424-0.492,1.073-0.334c0.648,0.158,1.119-0.126,1.119-0.126c1.011-0.764,1.654-2.187,1.654-2.187l0.988-1.997L27.059,1.12c0,0-0.131-0.028-0.979,0.259c0,0-0.773,1.905-1.725,3.087c0,0-0.374,0.552-0.664,0.416c-0.289-0.134-0.629-0.144-0.91-0.085c-0.281,0.06-1.156,0.349-1.948,1.413c-0.79,1.064-0.883,1.863-0.458,2.101c0.425,0.238,1.045-0.076,1.42-0.407c0.375-0.333,0.638-0.485,0.757-0.47c0.118,0.02,0.093,0.315,0.068,0.41c-0.026,0.094-0.154,1.364-1.625,3.913c-0.369,0.64-0.845,1.589-1.069,2.046l0.608,0.447l-0.999,0.503c-0.266,0.758-0.605,1.945-0.471,2.61c0.204,1.011,1.158,1.011,1.158,1.011s0.621,0.027,1.344-0.348c0.722-0.375,0.892,1.242,0.892,1.505c0,0.264-0.007,1.726-1.02,2.442c0,0-0.409,0.313-0.985,0.313c-0.579,0-0.954-0.169-0.954-0.169s-0.984-0.272-1.59,0.083c-0.604,0.358-1.326,1.098-1.897,2.17c-0.569,1.072-1.045,2.986-1.019,4.397c0.02,1.111,0.18,2.162,0.291,2.879l0.667,0.435l-0.543,0.623c0.079,1.136,0.168,3.363,0.155,4.109c-0.018,0.911-0.154,2.84-1.115,3.292c0,0-0.324,0.171-0.868-0.238s-1.132-0.426-1.37-0.435c-0.238-0.007-1.285,0.162-1.692,1.311c-0.408,1.145-0.375,2.688-0.29,3.597c0.086,0.91,0.876,2.458,1.872,2.458c0,0,0.484,0.035,1.055-0.553c0.568-0.586,0.902-0.637,1.156-0.629c0.255,0.009,0.749,0.272,1.072,2.851c0.307,2.442,0.437,4.442,0.414,6.668l0.605,0.392l-0.758,0.768c-0.042,0.199-0.089,0.417-0.142,0.626c-0.169,0.682-0.187,1.364-0.024,2.569c0.161,1.21,0.811,3.72,1.754,4.375c1.252,0.871,2.071,0.856,2.916,0.791c0.842-0.067,1.424-0.712,1.424-0.712s0.331-0.342,0.685-0.237c0.356,0.104,1.346,0.66,2.058,2.084c0.713,1.425,0.871,2.992-0.316,3.272c-1.187,0.272-3.231-0.846-3.231-0.846s-1.161-0.647-2.109,0.064c-0.951,0.713-0.977,1.807-0.502,3.15c0.261,0.738,0.782,1.938,1.513,3.188l0.721,0.302l-0.193,0.551c0.492,0.748,1.055,1.479,1.678,2.105c0,0,2.466,2.729,3.838,4.457c0,0,0.08,0.157-0.158,0.016c-0.238-0.146-1.266-0.621-1.82-0.566c-0.555,0.054-0.45,0.395-0.45,0.395s0.238,1.254,4.01,3.365c0,0,1.359,0.766,2.216,0.766c0,0,0.277,0.039,0.619-0.346c0.346-0.381,0.45-0.341,0.688-0.262c0.237,0.076,0.553,0.249,1.741,1.105c1.188,0.857,3.496,2.176,4.325,2.731c0.83,0.555,0.793,0.657,0.621,1.054c-0.171,0.396,0.593,0.619,0.593,0.619s1.899,0.855,2.928,0.846c1.029-0.016,1.464-0.119,2.097,0.012c0.632,0.133,1.28,0.291,1.345,0.346c0.066,0.053-0.315,0.038-0.315,0.038s-2.362-0.276-2.494-0.21c-0.13,0.066,0.014,0.184,0.99,0.436v0.006c1.245,0.217,2.507,0.387,3.782,0.51c-0.489-0.061-2.52-0.322-3.823-0.713c0,0-0.131-0.078,0.173-0.014c0.303,0.065,2.018,0.225,2.466,0.157c0.448-0.065-0.092-0.274-0.092-0.274s-0.897-0.425-2.889-0.582c0,0-0.803-0.055-1.503,0.014c-0.699,0.066-1.41-0.264-1.41-0.264s-1.028-0.317-0.78-0.646c0.126-0.165,0.137-0.336,0.065-0.502L38.188,89.707L38.188,89.707z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="444.7598" y1="550.8145" x2="473.8418" y2="550.8145" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#231F20"/><stop offset="1" stop-color="#474747"/></linearGradient><path style="&st5;" d="M62.342,86.16l-0.438,0.646c0.096,0.655-0.104,0.875-0.254,1.119c-0.156,0.26-0.59,0.592-0.375,1.185c0.218,0.59,1.687,0.401,2.535,0.144c0.852-0.26,1.569-0.49,2.134-0.693c0.562-0.198,0.719,0.086,0.719,0.086s0.246,0.175-0.574,0.606c-0.821,0.433-2.336,0.634-3.055,0.72c-0.724,0.086-0.506-0.043-1.586,0.33c-1.082,0.377-0.07,0.707-0.07,0.707c2.435,0.635,4.188,0.115,4.188,0.115l0.332-0.097c0.27-0.077,0.535-0.161,0.803-0.244c-2.021,0.456-3.326,0.149-3.739,0.095c-0.431-0.058-0.778-0.145-0.88-0.361c-0.102-0.215,0.479-0.2,0.479-0.2s1.683-0.188,3.24-0.69c1.557-0.506,1.932-0.98,1.871-1.341c-0.057-0.358-0.848-0.332-1.785-0.028c-0.937,0.305-2.334,0.75-2.662,0.821c-0.334,0.07-0.691,0.06-0.812-0.146c-0.114-0.203-0.216-0.53,0.146-0.905c0.36-0.376,0.402-0.694,0.402-0.694c0.055-0.254,0.057-0.523,0.021-0.8L62.342,86.16l0.545-0.118c-0.298-1.124-1.052-2.218-1.279-2.577c-0.314-0.507-0.836-0.793-2.393-0.535c-1.556,0.26-3.386,1.035-3.386,1.035s-1.888,0.997-3.298,0.812c-1.413-0.188-1.703-1.614-1.688-2.063c0.015-0.447,0.304-0.835,1.039-1.123c0.735-0.289,2.465-0.678,4.985-0.808s3.458-1.771,3.458-1.771c0.33-0.478,0.922-1.543-0.489-2.336c-1.41-0.791-1.441-0.593-2.119-1.107c-0.678-0.52-1.412-1.153-1.701-2.033c-0.025-0.084-0.066-0.197-0.104-0.292l-0.849-0.558l0.41-0.371c-0.34-0.67-0.693-1.271-0.693-1.271s-1.281-1.902-0.246-3.703c1.038-1.803,2.736-2.348,2.736-2.348s1.5-0.332,2.996,0.016c1.418,0.324,2.133-0.219,2.133-0.219s0.865-0.374,1.123-2.102c0.264-1.729-0.014-4.943-2.316-5.578c-2.307-0.633-3.527,0.563-3.527,0.563s-1.24,1.369-1.644,1.57c-0.404,0.201-1.022,0.563-1.022,0.563s-0.867,0.519-1.453,0.648c-0.393,0.086-1.791-1.771-1.933-3.201c-0.133-1.316-0.401-2.388-0.306-5.096l-0.485-0.63l0.537-0.533c0.101-2.999-0.417-5.116-1.188-6.461c-0.807-1.412-2.119-2.161-2.766-2.478c-0.648-0.318-2.147-0.462-3.17-0.086c-1.023,0.374-1.239,0.678-1.613,1.326c-0.376,0.648-0.836,0.605-0.836,0.605s-1.427,0.043-1.888-2.133c-0.646-3.049,0.359-4.035,0.359-4.035s0.318-0.476,1.369-0.619c1.053-0.144,1.73,0.115,2.537,0.315c0.806,0.202,1.41,0.116,2.419-0.374c1.008-0.491,1.442-1.297,1.238-2.739c-0.195-1.393-0.255-1.742-1.483-5.964l-0.875-0.46l0.583-0.579C44.87,23.032,44.8,20.35,44.8,20.35c-0.106-0.977,0.049-1.292,0.598-1.54c0.576-0.259,1.116-0.175,1.934-0.123c0.818,0.053,1.425-0.079,1.847-0.316c0.422-0.237,1.581-0.87,1.504-2.162c-0.08-1.292-1.109-2.824-1.953-3.351c-0.843-0.528-1.953-0.316-2.558,0.131c-0.606,0.45-0.845,1.029-1.214,1.214c-0.369,0.183-0.895,0.605-1.45,0.474c-0.554-0.132-0.581-1.371-0.818-2.77c-0.153-0.907-0.271-1.611-0.338-1.989l-0.678-0.254c0.044,0.557,0.535,3.304,0.535,3.304s0.223,1.364,0.308,1.692c0.086,0.329,0.314,1.05,0.314,1.05s0.092,0.364,0.456,0.535c0.365,0.172,1.052,0.24,1.743-0.032c0.692-0.271,0.886-0.572,1.199-0.938c0.315-0.364,0.429-0.493,0.429-0.493s0.663-0.622,1.478-0.343c0.813,0.278,1.299,1.228,1.299,1.228l0.028,0.06c0,0,0.403,0.661,0.392,1.269v-0.057c0,0-0.022,0.301-0.697,0.818c-0.676,0.519-1.226,0.479-1.678,0.442c-0.454-0.04-0.666-0.072-0.797-0.045l-0.719,0.038C45.178,18.303,44.74,18.6,44.74,18.6c-1.8,1.064,0.736,9.288,0.736,9.288l0,0L45.2,28.501c0,0,0.514,2.052,0.904,3.378c0.388,1.326,0.562,2.637,0.62,2.91c0.058,0.274,0.044,0.762-0.317,1.051c-0.359,0.289-1.239,0.534-1.425,0.562c-0.187,0.029-0.535-0.042-0.996-0.201c-0.462-0.158-0.922-0.187-0.922-0.187s-1.11-0.188-2.291,0.173c-1.182,0.359-2.076,1.569-2.148,3.083c-0.071,1.513-0.057,2.278,0.535,3.617c0.59,1.34,1.657,2.104,2.463,2.118c0.808,0.014,1.469-0.403,1.931-1.051c0.459-0.65,0.59-0.751,0.59-0.751c0.548-0.302,1.944-0.433,2.651-0.172c0.708,0.258,2.007,1.073,2.723,2.679c0.579,1.298,0.76,2.75,0.729,5.363l0.584,0.448l-0.61,0.703c-0.007,0.246-0.016,0.498-0.026,0.761c-0.143,3.876,0.72,5.864,0.72,5.864c0.491,1.065,1.023,1.83,1.745,2.318c0.719,0.489,1.699,0.156,2.018,0c0.315-0.158,1.194-0.563,1.943-1.037c0.749-0.477,0.725-0.679,1.629-1.515c0.907-0.833,2.076-0.604,2.076-0.604s1.107,0.028,1.74,1.313c0.637,1.283,0.509,3.109,0.347,3.773c-0.158,0.662-0.444,1.097-1.063,0.979c-0.621-0.114-1.645-0.217-2.019-0.231c-0.375-0.014-1.433-0.049-2.394,0.203c-0.938,0.244-2.205,0.92-3.414,2.883c-0.938,1.52-0.478,3.013-0.262,3.603c0.17,0.462,0.635,1.104,1.043,1.896l0.756,0.252l-0.35,0.656c0.398,0.963,0.701,1.493,1.305,2.151c0.648,0.705,1.672,1.251,2.881,1.714c1.213,0.462,0.662,1.282,0.662,1.282c-0.69,1.497-2.75,1.557-3.354,1.628c-0.604,0.07-1.872,0.188-3.058,0.447c-1.182,0.261-2.291,0.418-2.954,1.182c-0.661,0.764-0.402,1.557-0.013,2.393c0.388,0.834,1.427,1.28,2.853,1.226c1.426-0.058,2.35-0.476,3.214-0.851s2.362-0.809,2.81-0.937c0.445-0.129,1.051-0.39,1.498,0.26c0.482,0.701,0.994,1.697,1.229,2.45L62.342,86.16L62.342,86.16z"/><path style="&st34;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><path style="&st34;" d="M91.268,12.579l0.328,0.413l0.279,0.5c1.021,1.648,2.846,4.295,2.846,4.295s0.739,0.958,0.905,0.968c0.164,0.01-0.084-0.741-0.084-0.741s-0.271-0.979,0.517,0.298c0.73,1.19,1.207,2.359,1.317,2.72c0.114,0.361,0.042,0.411,0.042,0.411s-0.146,0.072-0.146,0.33c0,0.505,0.496,1.659,0.496,1.659s1.545,3.926,2.07,5.563c0.526,1.641,1.133,4.368,1.133,4.368s0.187,0.804,0.207,1.174c0.021,0.371-0.063,0.381-0.229,0.186c-0.164-0.196-0.329-0.072-0.329-0.072s-0.175,0.072-0.175,0.773c0,0.7,0.085,2.346,0.217,3.615c0.152,1.505,0.616,2.133,0.616,2.133s0.413,0.618,0.526-0.577c0.096-1.028,0.185-0.228,0.185-0.228c0.196,1.557,0.062,4.544,0.03,4.955c-0.019,0.218-0.032,0.433-0.049,0.64l0.133-0.221c0.201-2.971,0.06-5.359,0.06-5.359s-0.144-1.323-0.3-1.311c-0.155,0.01-0.211,0.701-0.211,0.701s-0.065,0.467-0.156,0.456c-0.088-0.011-0.369,0.022-0.566-1.412c-0.199-1.436-0.156-2.949-0.156-2.949s-0.043-0.155,0.048-0.189c0.09-0.034,0.188,0.1,0.188,0.1s0.133,0.189,0.287,0.033c0.156-0.154,0.19-0.622-0.301-3.08c-0.288-1.454-0.711-2.896-1.006-3.832l-0.294-0.333l-0.058-0.718c0,0-0.311-0.913-1.033-2.737c-0.723-1.824-0.846-2.458-0.846-2.458s-0.045-0.2,0.066-0.234c0.111-0.032,0.091-0.178,0.091-0.178s-0.013-0.245-0.278-0.99c-0.268-0.746-0.426-1.281-1.356-2.86c-0.869-1.468-1.124-1.558-1.124-1.558s-0.426-0.234-0.112,0.591c0.313,0.823-0.075,0.232-0.075,0.232c-0.925-1.177-2.838-4.292-2.838-4.292l-0.537-0.373l-0.508-1.261l-0.015,0.01"/><path style="&st34;" d="M1.547,32.696l-0.183,0.37c-0.472,2.495-0.625,5.135-0.62,5.31c0.01,0.208-0.036,0.211-0.075,0.178c-0.042-0.035,0.03-0.16-0.048-0.16c-0.079,0-0.108,0.211-0.108,0.211L0.512,38.6c-0.021,0.288-0.038,0.574-0.053,0.861l0.016-0.003c0.068-0.098,0.097-0.028,0.097-0.028s-0.029,0.126,0.097,0.056c0.126-0.07,0.21-1.379,0.21-1.379s0.014-2.813,0.836-6.14c0.819-3.327,1.281-4.259,1.281-4.259s0.154-0.418,0.138-0.083C3.12,27.958,3.33,27.986,3.33,27.986c0.375-0.054,0.821-1.125,1.267-2.493c0.445-1.363,0.668-2.589,0.668-2.7c0-0.11-0.055-0.194-0.152-0.138c-0.098,0.056-0.125,0.014-0.125,0.014c-0.014-0.208,0.361-1.127,0.361-1.127c1.253-3.202,3.104-5.694,3.104-5.694l0.09-0.504c-0.164,0.254-0.27,0.419-0.421,0.661c-0.056,0.089-0.042,0.297-0.001,0.32c-0.201,0.191-0.365,0.35-0.476,0.456c-2.707,4.473-3.059,6.556-3.059,6.556c-0.017,0.214,0.004,0.311,0.111,0.306c0.065-0.003,0.251-0.349,0.116,0.354c-0.09,0.468-0.524,1.708-0.693,2.212c-0.171,0.505-0.358,0.85-0.495,0.826C3.49,27.01,3.49,26.801,3.49,26.801s-0.042-0.546-0.398,0.245c-0.356,0.791-0.713,1.859-1.425,4.65c-0.031,0.125-0.063,0.251-0.092,0.38L1.547,32.696L1.547,32.696z"/><path style="&st34;" d="M4.841,62.626c-0.15-0.401-0.264-0.722-0.179-0.581c0.085,0.143,0.198,0.432,0.462,0.725c0.263,0.291,0.442-0.226-0.622-3.104s-1.354-3.04-1.402-3.095c-0.046-0.058-0.215-0.237-0.167,0.167c0.045,0.404,0.018,0.656-0.51-1.146c-0.528-1.806-0.996-4.844-1.025-5.089c-0.027-0.243-0.169-1.778-0.396-3.594c-0.226-1.814-0.246-3.743-0.207-4.28c0.039-0.537-0.066-0.828-0.123-0.837c-0.056-0.008-0.094,0.047-0.131,0.284c-0.038,0.234-0.01,0.395-0.067,0.385c-0.057-0.009-0.076-0.471-0.076-0.471H0.391c0,0.05,0,0.1,0,0.151c0,0.174,0.001,0.345,0.002,0.519l0.039,0.402c0.033,0.597,0.129,0.354,0.135,0.246c0.006-0.109,0.03-0.329,0.03-0.329s0.103-0.884,0.084,0.02c-0.019,0.904,0.236,4.563,0.236,4.563c0.019,0.236,0.041,0.479,0.068,0.729l0.063,0.092l-0.042,0.104c0.265,2.425,0.795,5.086,0.795,5.086c0.507,2.417,1.11,3.846,1.308,4.25c0.198,0.405,0.236,0.085,0.17-0.271c-0.066-0.357,0.546,0.688,0.873,1.674c0.332,0.99,0.556,1.815,0.556,1.815s0.254,0.781,0.142,0.828c-0.113,0.046-0.292-0.293-0.292-0.293s-0.473-0.835-0.274-0.228c0.398,1.231,1.6,3.822,1.6,3.822l1.396,2.471C6.282,65.836,4.982,63.004,4.841,62.626L4.841,62.626z"/><path style="&st34;" d="M7.281,67.639c0.069,0.125,0.136,0.246,0.202,0.359L7.281,67.639z"/><path style="&st34;" d="M20.722,2.874C20.51,3.216,20.48,3.388,20.48,3.388s0.112-0.118,0.183-0.237C20.733,3.033,20.722,2.874,20.722,2.874z"/><path style="&st34;" d="M17.216,5.572c-0.417,0.048-0.677,0.25-0.677,0.25S16.889,5.761,17.216,5.572z"/><path style="&st34;" d="M84.005,4.909c0,0,0.247-0.03,0.347,0.02c0.101,0.049,0.066-0.158,0.066-0.158s-0.287-0.406-0.322-0.556c-0.32-0.089-0.611-0.1-0.611-0.1l-0.028,0.034c-0.01,0.075-0.036,0.188-0.012,0.297C83.441,4.448,83.917,4.811,84.005,4.909L84.005,4.909z"/><path style="&st34;" d="M87.487,7.88l0.095-0.152l-0.223-0.679c-0.004-0.012-0.012-0.022-0.021-0.036c-0.007,0.066-0.049,0.125-0.172,0.115c0,0-0.099-0.03-0.011,0.198C87.219,7.469,87.355,7.699,87.487,7.88L87.487,7.88z"/><path style="&st34;" d="M101.566,51.162c0,0,0.347-3.236,0.457-4.392c0.018-0.173,0.031-0.343,0.045-0.513l-0.098-0.241c-0.459,5.815-0.938,7.727-0.938,7.727s0.013-0.037,0.031-0.101c0.189-0.817,0.357-1.646,0.51-2.48C101.568,51.162,101.566,51.162,101.566,51.162L101.566,51.162z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="266.4922" y1="-395.2783" x2="295.9644" y2="-485.0349" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".0094" stop-color="#FCFCFC"/><stop offset=".0655" stop-color="#EEEEEE"/><stop offset=".1342" stop-color="#E5E5E5"/><stop offset=".2515" stop-color="#E3E3E3"/><stop offset=".3357" stop-color="#8A8A8A"/><stop offset=".4422" stop-color="#B8B8B8"/><stop offset="1" stop-color="#3B3B3B"/></linearGradient><path style="&st33;" d="M79.003,84.528c0,0,0.667-0.653,0.539-0.752c-0.128-0.101-0.623,0.256-0.623,0.256s-0.073,0.062-0.185,0.142l0.393-0.252c0,0-0.038,0.238-0.355,0.555c0,0-0.094,0.094-0.258,0.248c-0.957,0.938-2.386,1.998-2.386,1.998l0.396-0.211C77.844,85.703,79.003,84.528,79.003,84.528z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="460.4629" y1="512.5557" x2="509.5884" y2="573.3062" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EFF0F0"/><stop offset=".5914" stop-color="#F0F1F2"/><stop offset=".599" stop-color="#787878"/><stop offset=".6456" stop-color="#EEEFF0"/><stop offset="1" stop-color="#D8D9DB"/></linearGradient><path style="&st30;" d="M82.984,39.705l0.51-0.891l-0.127-1.667c0,0-0.085-0.893-0.566-2.28c-0.979-2.828-1.941-4.122-1.941-4.122s-0.592-1.318-1.969-1.318c-1.33,0-1.431,1.219-1.431,1.219s-0.312,0.963-0.821,1.261c-0.5,0.29-1.972,1.146-2.748,0.296c-0.941-1.026-1.461-2.225-1.56-3.372c-0.101-1.146,0.367-1.615,0.367-1.615s0.1-0.296,1.614-0.296c1.703,0,2.014-0.525,2.014-0.525s0.324-0.296,0.297-0.963s-0.284-2.097-0.779-3.001c-0.324-0.596-1.058-1.537-1.684-2.261l-0.967-0.178l0.15-0.699c-0.56-0.514-3.465-3.959-4.031-4.766c-0.564-0.808-0.65-0.993-0.75-1.262c-0.099-0.269,0.17-0.877,0.412-1.161c0.238-0.283,0.521-0.341,1.104-0.212c0.58,0.127,0.961,0.381,1.886,0.084c0.919-0.297,0.962-0.992,1.033-1.699c0.071-0.708-0.78-2.209-1.458-2.932c-0.684-0.721-1.645-0.836-2.311-0.792c-0.664,0.042-1.047,0.523-1.433,0.737c-0.382,0.213-1.103,0.425-1.429,0.284c-0.326-0.142-0.823-0.284-1.375-1.261c-0.43-0.76-0.794-1.459-0.979-1.817L63.299,4.42v0.012c0,0,0.633,1.654,1.633,2.811c0.998,1.157,2.266,0.919,2.266,0.919s0.82-0.089,1.533-0.772c0.711-0.683,1.761-0.148,2.024,0.04c0.269,0.189,0.853,0.911,1.478,2.127c0.621,1.216-0.355,2.058-0.355,2.058s-0.555,0.535-1.691,0.088c-1.14-0.443-1.813,0.259-1.986,0.614c-0.182,0.357-0.508,0.99,0.076,1.73c0.584,0.742,3.178,4.273,4.916,5.945c1.74,1.672,2.314,3.047,2.682,4.342c0.365,1.297,0.079,1.899-0.521,2.018c-0.604,0.118-1.148,0.021-2.086,0.187c-0.94,0.17-1.349,0.367-1.543,1.653c-0.199,1.286,0.562,3.373,1.67,4.361c1.106,0.989,2.334,0.386,2.76,0.228c0.427-0.159,1.352-0.653,1.681-2.027c0.188-0.783,0.851-0.721,0.851-0.721s0.563-0.071,0.854,0.117c0.287,0.19,0.633,0.525,1.402,1.87c0.772,1.346,1.453,3.146,1.724,4.738C82.924,38.35,82.729,38.576,82.984,39.705c0.256,1.128,1.078,3.245,1.466,4.074c0.383,0.832,0.78,1.662,0.989,2.107c0.205,0.445,0.531,0.782,1.443,0.802c0.908,0.02,1.273-0.228,1.541-0.662c0.27-0.435,0.612-1.088,0.713-1.316c0.1-0.228,0.467-0.911,1.146-1.02c0.685-0.108,1.762,0.01,2.106,1.198c0.313,1.071,0.76,2.622-0.158,4.5c-0.65,1.334-1.129,0.859-2.451,0.948c0,0-1.165-0.01-1.781,0.921c-0.611,0.93-0.416,2.61-0.286,3.877s0.988,3.113,1.621,3.563c0.636,0.443,0.86,0.849,1.08,1.256c0.216,0.404,0.534,1.205,0.216,3.313c-0.313,2.106-0.979,3.74-1.867,4.521c-0.024,0.021-0.05,0.043-0.07,0.063c-0.067,0.065-0.141,0.135-0.219,0.201c-0.537,0.521-0.371,0.543-0.889,0.793c-0.594,0.289-0.988,0.207-1.958,0.365c-0.97,0.16-1.583,0.327-2.088,0.821c-0.503,0.495-1.243,1.409-0.979,3.187c0.148,0.986,1.318,0.584,2.229,0.111c-0.274,0.125-0.553,0.221-0.798,0.246c-1.033,0.113-0.991-0.949-0.921-1.415c0.069-0.47,0.313-1.544,1.063-1.97s1.799-0.41,2.533-0.512c0.738-0.101,1.076-0.313,1.076-0.313s1.205-0.766,1.997-2.055c0.793-1.289,1.502-3.371,1.587-5.438c0.084-2.068-0.821-2.902-1.104-3.271c-0.283-0.366-0.799-0.203-1.431-1.729c-0.724-1.74-0.81-3.188-0.751-4.079c0.057-0.892,0.27-1.231,0.682-1.612c0.41-0.383,2.223-0.213,2.223-0.213s0.893,0.185,1.686-1.134c0.793-1.317,0.738-3.471,0.481-4.546c-0.253-1.076-0.623-2.013-2.097-2.168c-1.471-0.152-2.138,1.66-2.138,1.66s-0.297,0.693-0.608,1.092c-0.312,0.395-1.16,0.285-1.16,0.285c-0.37-0.044-0.821,0.099-1.264-0.81c-0.438-0.906-1.442-3.286-1.442-3.286c-0.339-0.809-0.556-1.512-0.688-2.055L82.984,39.705L82.984,39.705z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="272.8721" y1="-392.8257" x2="302.4699" y2="-482.9646" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st9;" d="M82.487,79.313l0.801-0.479c0.788-1.231,1.72-2.31,2.431-3.103c0.863-0.961,1.896-2.522,1.896-2.522s0.835-1.431,0.638-1.784c-0.13-0.23-0.704,0.02-1.687,0.752c-3.674,2.746-3.971,1.246-3.971,1.246c0.422,2.438,4.729-1.633,5.108-1.375c-0.063,0.563-0.457,1.172-1.25,2.25c0,0-0.388,0.555-0.78,0.953c-0.369,0.432-0.578,0.641-0.578,0.641s-0.088,0.09-0.125,0.125c-0.471,0.541-1.024,1.242-1.595,2.018c-0.019,0.021-0.104,0.113-0.125,0.143c-0.295,0.416-0.491,0.73-0.702,1.062c-0.014,0.022-0.064,0.011-0.076,0.034c0-0.002-0.013,0.014-0.025,0.037c-0.245,0.39-0.373,0.713-0.508,0.959c-0.012,0.029-0.021,0.065-0.03,0.095c0,0-0.319,0.665-0.457,1.067c-0.14,0.405-0.12,0.547-0.623,0.625c-0.504,0.078-0.276-0.053-1.021,0.196c0,0-0.403,0.199-0.938,0.571c-0.027,0.021-0.057,0.042-0.082,0.063c-0.736,0.604-1.247,1.119-1.534,1.436c-0.051,0.063-0.099,0.13-0.146,0.195c0,0-0.157,0.168,0.051,0.188c0.206,0.021,0.633-0.01,1.008-0.169l0.088-0.057c-0.186,0.103-0.373,0.174-0.513,0.162c-0.396-0.026,0.479-0.864,0.479-0.864s0.906-1.019,1.771-1.175c0.862-0.156,1.021-0.371,1.444-0.693c0.426-0.327,0.494-0.682,1.359-2.254c0.03-0.059,0.064-0.115,0.098-0.176L82.487,79.313L82.487,79.313z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="444.6943" y1="510.9561" x2="469.7246" y2="592.0699" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st27;" d="M55.064,72.686l0.408-0.377c-0.34-0.668-0.693-1.269-0.693-1.269s-1.282-1.901-0.245-3.703c1.036-1.803,2.737-2.348,2.737-2.348s1.5-0.332,2.996,0.017c1.418,0.323,2.133-0.22,2.133-0.22s0.865-0.376,1.123-2.104c0.261-1.729-0.014-4.94-2.317-5.576c-2.306-0.633-3.528,0.563-3.528,0.563s-1.242,1.369-1.644,1.57c-0.404,0.2-1.024,0.562-1.024,0.562s-0.865,0.52-1.453,0.648c-0.39,0.087-1.788-1.771-1.931-3.2c-0.133-1.313-0.4-2.385-0.305-5.084c0-0.005,0-0.01,0-0.017l-0.486-0.629l0.537-0.526c0.102-3-0.418-5.119-1.188-6.463c-0.805-1.414-2.118-2.163-2.766-2.479c-0.647-0.317-2.146-0.461-3.169-0.086c-1.022,0.375-1.237,0.677-1.613,1.325c-0.376,0.65-0.835,0.606-0.835,0.606s-1.427,0.044-1.89-2.132c-0.644-3.049,0.36-4.036,0.36-4.036s0.318-0.475,1.369-0.619c1.053-0.144,1.73,0.115,2.536,0.317c0.807,0.2,1.41,0.114,2.42-0.374c1.009-0.49,1.442-1.298,1.24-2.738c-0.196-1.397-0.249-1.727-1.484-5.966l-0.874-0.458l0.582-0.579c-1.182-4.271-1.257-6.961-1.257-6.961c-0.105-0.975,0.049-1.29,0.598-1.537c0.576-0.261,1.117-0.177,1.934-0.125c0.819,0.052,1.425-0.079,1.847-0.316c0.423-0.236,1.583-0.87,1.503-2.163c-0.078-1.292-1.108-2.823-1.951-3.35c-0.844-0.528-1.952-0.317-2.56,0.132c-0.606,0.447-0.843,1.028-1.213,1.212c-0.368,0.185-0.896,0.607-1.45,0.474c-0.554-0.132-0.581-1.372-0.818-2.77c-0.155-0.915-0.276-1.614-0.342-1.989l-0.674-0.254c0.043,0.557,0.535,3.304,0.535,3.304l0.294,1.624c0,0,0,0.007,0,0.02c0.006,0.018,0.009,0.036,0.013,0.05c0.019,0.079,0.049,0.18,0.082,0.289c0.114,0.215,0.37,0.456,0.942,0.502c1.076,0.089,1.772-0.468,2.025-0.709c0.254-0.239,0.86-0.911,0.86-0.911s0.329-0.632,1.253-0.494c0.922,0.14,1.238,0.773,1.403,1.013c0.167,0.242,1.57,1.961,0.672,2.861c-0.039,0.039-0.093,0.089-0.152,0.146c-0.104,0.111-0.245,0.246-0.446,0.399c-0.675,0.517-1.226,0.48-1.678,0.442c-0.453-0.039-0.665-0.07-0.795-0.043l-0.72,0.038c-0.787,0.11-1.224,0.408-1.224,0.408c-1.8,1.065,0.735,9.287,0.735,9.287s0.671,2.029,0.973,2.979c0.301,0.949,0.496,1.625,0.791,3.264c0.295,1.639-0.231,2.092-0.525,2.251c-0.294,0.158-0.984,0.568-1.77,0.604c-0.783,0.034-1.027-0.368-2.371-0.432c-1.345-0.065-2.246,0.345-2.661,0.906c-0.417,0.561-0.913,1.862-0.675,3.4c0.237,1.541,0.504,2.064,1.092,2.748c0.59,0.681,1.165,0.97,1.978,0.696c0.792-0.266,0.764-0.756,1.173-1.164c0.517-0.519,0.855-0.792,2.063-0.821c1.208-0.029,1.979,0.288,2.594,0.784c0.619,0.496,1.934,1.646,2.294,3.356c0.359,1.713,0.424,2.268,0.424,3.676s-0.101,2.978-0.064,4.381c0.036,1.4,0.187,2.841,0.577,3.795c0.386,0.955,0.926,1.755,1.4,2.18c0.475,0.426,0.896,0.438,1.373,0.252c0.475-0.188,1.511-0.771,2.373-1.324c0.861-0.555,0.797-0.99,1.576-1.502c0.875-0.576,1.799-0.605,2.457-0.486c0.661,0.112,1.676,0.631,2.092,1.889C63.059,60.58,63,61.998,63,61.998s0.035,1.186-0.445,1.876c-0.48,0.688-1.272,0.616-1.625,0.545c-0.354-0.071-1.094-0.136-1.094-0.136s-1.451-0.165-2.563,0.094c-1.105,0.258-2.077,1.085-2.73,1.896c-0.652,0.813-0.941,1.57-0.984,2.158c-0.043,0.59,0.027,1.595,0.642,2.572c0.612,0.979,0.712,1.432,1.409,2.827c0.695,1.396,2.15,2.17,2.201,2.206c0.05,0.037,1.388,0.523,1.89,0.949c0.505,0.425,0.555,0.826,0.411,1.208c-0.145,0.381-0.438,1.094-1.604,1.604c-1.166,0.512-2.591,0.523-3.496,0.617c-0.906,0.094-2.651,0.332-3.697,0.834c-1.043,0.503-0.97,1.454-0.97,1.454s-0.028,1.556,1.337,1.983c1.365,0.434,2.64,0,3.201-0.237c0.562-0.238,1.487-0.583,1.487-0.583s1.791-0.631,2.752-0.848c0.965-0.217,1.533-0.323,2.188,0.832c0.652,1.158,1.014,1.886,1.078,2.625c0.064,0.74-0.209,1.148-0.461,1.432c-0.25,0.279-0.217,0.46-0.217,0.46c-0.105,0.873,1.182,0.763,1.182,0.763s0.041-0.004,0.11-0.018c-0.26,0.021-0.499-0.021-0.59-0.178c-0.116-0.202-0.217-0.531,0.146-0.906c0.359-0.374,0.402-0.693,0.402-0.693c0.305-1.439-1.038-3.371-1.354-3.875c-0.315-0.503-0.836-0.791-2.394-0.531c-1.556,0.26-3.386,1.037-3.386,1.037s-1.891,0.995-3.299,0.809c-1.413-0.188-1.701-1.614-1.687-2.063c0.016-0.444,0.304-0.836,1.038-1.122c0.733-0.289,2.464-0.679,4.984-0.809c2.522-0.128,3.458-1.771,3.458-1.771c0.331-0.478,0.923-1.543-0.489-2.338c-1.412-0.789-1.44-0.589-2.116-1.104c-0.68-0.521-1.412-1.153-1.701-2.034c-0.026-0.084-0.07-0.198-0.108-0.291L55.064,72.686L55.064,72.686z"/><linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st35;" d="M-16.122-14.641"/><linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".7473" stop-color="#F9F9F9"/><stop offset="1" stop-color="#D5D7D8"/></linearGradient><path style="&st36;" d="M-16.122-14.641"/><path style="&st34;" d="M92.002,13.363c1.021,1.649,2.844,4.295,2.844,4.295s0.256,0.332,0.5,0.605l0.01-0.011c0.011-0.375-0.051-0.571-0.06-0.621l-0.091-0.274c-0.021-0.367,0.438,0.095,0.611,0.288c-0.498-0.754-0.659-0.811-0.659-0.811s-0.423-0.234-0.111,0.59c0.312,0.824-0.075,0.233-0.075,0.233c-0.924-1.177-2.838-4.293-2.838-4.293l-0.553-0.383L92.002,13.363L92.002,13.363z"/><path style="&st34;" d="M101.539,51.352c0.014-0.063,0.023-0.125,0.034-0.188c-0.004,0-0.009,0-0.009,0s0.005-0.03,0.013-0.089C101.563,51.17,101.551,51.262,101.539,51.352L101.539,51.352z"/><path style="&st34;" d="M100.822,35.679c0.088-0.033,0.188,0.1,0.188,0.1s0.135,0.189,0.289,0.033c0.107-0.104,0.155-0.353,0.025-1.257c-0.004,0.229-0.053,0.409-0.137,0.59c-0.139,0.296-0.314,0.02-0.441-0.081c-0.129-0.098-0.168,0.07-0.168,0.07l-0.004,0.162c0,0.7,0.087,2.346,0.217,3.617c0.063,0.605,0.173,1.071,0.287,1.408l0.041,0.076c0.089,0.148,0.188,0.343,0.307,0.255c0.116-0.089,0.274-0.582,0.274-0.582l0.128-0.591c0.191,0.113,0.291,0.529,0.341,0.962c-0.002-0.037-0.004-0.056-0.004-0.056s-0.144-1.324-0.3-1.313c-0.155,0.01-0.21,0.701-0.21,0.701s-0.066,0.468-0.157,0.456c-0.088-0.011-0.365,0.022-0.564-1.412c-0.201-1.436-0.158-2.949-0.158-2.949S100.732,35.713,100.822,35.679L100.822,35.679z"/><path style="&st34;" d="M99.696,28.566l0.298,0.341c0.479,1.494,0.996,3.843,1.092,4.264c-0.027-0.139-0.056-0.286-0.088-0.441c-0.288-1.454-0.711-2.896-1.006-3.832L99.696,28.566l-0.05-0.702c-0.004-0.01-0.006-0.016-0.006-0.016s-0.312-0.913-1.033-2.737c-0.725-1.824-0.848-2.458-0.848-2.458s-0.043-0.2,0.066-0.234c0.109-0.032,0.09-0.178,0.09-0.178s-0.013-0.245-0.277-0.99c-0.182-0.503-0.312-0.911-0.662-1.607c0.281,0.585,0.463,1.052,0.524,1.259l0.028,0.068c0,0,0.099,0.148,0.066,0.552c-0.027,0.403-0.146,0.452-0.146,0.452l0.022,0.14c0.141,0.538,0.418,1.187,0.418,1.187s1.065,2.709,1.748,4.54L99.696,28.566L99.696,28.566z"/><linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="274.5342" y1="-396.1577" x2="255.2091" y2="-490.1944" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st37;" d="M42.958,91.536c0.938,0.177,1.723,0.358,1.889,0.396C44.514,91.822,43.895,91.653,42.958,91.536z"/><linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="422.5586" y1="518.7568" x2="427.2878" y2="578.1768" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset=".2198" stop-color="#989A9C"/><stop offset=".2527" stop-color="#FFF"/></linearGradient><path style="&st38;" d="M20.381,74.92l0.007-0.164l-0.052-0.08c0,0-1.874-3.375-1.676-4.615c0,0,0.069-0.827,1.241-1.187c0.817-0.25,0.71,0.538,3.112,0.976c0,0,2.07,0.557,2.611-0.946c0.539-1.507-0.566-3.394-0.566-3.394s-1.45-2.656-3.244-2.756c-0.95-0.055-0.692,0.583-2.125,0.924c0,0-1.913,0.185-2.519-0.963c-0.733-1.389-1.015-2.968-1.015-4.021c0-1.058,0.045-1.001,0.126-1.405c0.045-0.219,0.186-0.548,0.248-1.09l-0.134-0.675l0.204-0.499c0.002-0.26-0.004-0.535-0.021-0.83c-0.092-1.661-0.211-4.221-0.436-5.711c-0.223-1.491-0.633-3.799-1.991-3.865c0,0-0.671-0.052-1.636,0.885c-0.882,0.856-1.682-0.708-1.726-1.663c-0.052-1.121,0.131-2.255,0.409-2.795c0.277-0.541,1.042-0.566,1.186-0.554c0.146,0.012,0.555,0.17,1.042,0.474c0.489,0.304,1.161,0.304,1.558-0.092c0.395-0.395,0.948-0.856,1.173-2.598c0.225-1.741,0.225-3.547,0.013-5.71l-0.224-0.485l1.339-0.288c-0.001-0.016-0.021-0.125-0.032-0.195c0,0,0-0.001-0.001-0.002c-0.001-0.017-0.004-0.033-0.007-0.052c0-0.002,0-0.004,0-0.005c-0.003-0.019-0.007-0.038-0.009-0.057c-0.001-0.001-0.001-0.001-0.001-0.003c-0.003-0.022-0.006-0.042-0.009-0.062c0-0.001,0-0.001,0-0.001c-0.004-0.022-0.006-0.045-0.011-0.067c0-0.003-0.001-0.006-0.001-0.007c-0.002-0.022-0.006-0.045-0.008-0.068c-0.001-0.005-0.001-0.01-0.003-0.015c-0.002-0.023-0.005-0.047-0.009-0.069c-0.001-0.004-0.002-0.01-0.002-0.014c-0.003-0.026-0.007-0.05-0.012-0.076c0-0.002,0-0.005,0-0.005c-0.004-0.025-0.008-0.05-0.012-0.076c0-0.007-0.001-0.012-0.002-0.018c-0.002-0.024-0.006-0.052-0.009-0.079c-0.001-0.005-0.001-0.011-0.003-0.021c-0.004-0.027-0.006-0.053-0.01-0.081c-0.001-0.007-0.002-0.013-0.003-0.02c-0.003-0.028-0.005-0.057-0.009-0.087c-0.001-0.003-0.001-0.008-0.003-0.013c-0.003-0.028-0.005-0.056-0.009-0.082c-0.001-0.006-0.001-0.011-0.002-0.017c-0.003-0.031-0.006-0.06-0.01-0.091c-0.001-0.007-0.001-0.014-0.002-0.02c-0.004-0.03-0.006-0.062-0.011-0.09c0-0.007-0.001-0.015-0.002-0.022c-0.003-0.031-0.006-0.063-0.01-0.094c-0.001-0.006-0.002-0.011-0.002-0.018c-0.003-0.032-0.005-0.063-0.009-0.094c0-0.003,0-0.005-0.001-0.009c-0.003-0.033-0.004-0.068-0.009-0.1c0-0.005,0-0.013-0.001-0.02c-0.002-0.035-0.005-0.065-0.007-0.099c-0.001-0.008-0.001-0.015-0.002-0.021c-0.003-0.032-0.005-0.066-0.007-0.099c0-0.005-0.001-0.011-0.001-0.02c-0.002-0.033-0.006-0.068-0.007-0.101c0-0.003-0.001-0.008-0.001-0.009c-0.002-0.033-0.004-0.066-0.007-0.1c0-0.006,0-0.012,0-0.017c-0.001-0.032-0.003-0.068-0.005-0.1c0-0.008,0-0.014-0.001-0.022c-0.001-0.033-0.004-0.067-0.005-0.098c0-0.006,0-0.013,0-0.021c-0.002-0.033-0.003-0.066-0.004-0.101c0-0.005,0-0.008,0-0.013c-0.001-0.032-0.002-0.066-0.002-0.099c0-0.003,0-0.005,0-0.009c0-0.034-0.001-0.067-0.001-0.102c0-0.005,0-0.012,0-0.016c0-0.033,0-0.067,0-0.098c0-0.005,0-0.012,0-0.019c0.001-0.032,0.001-0.065,0.001-0.096c0-0.004,0.001-0.009,0.001-0.014c0-0.033,0.001-0.066,0.003-0.1c0.052-1.243,0.291-1.751,0.291-1.751l0.058-0.166c0,0,0.46-1.458,1.152-2.458l-0.011,0.024c0,0,0.446-0.738,1.231-0.816c0.785-0.077,1.003,0.158,1.371,0.202c0.04,0.004,0.078,0.008,0.115,0.013c0.013,0.001,0.025,0.002,0.037,0.004c0.025,0.002,0.051,0.003,0.074,0.006c0.014,0.001,0.028,0.002,0.042,0.003c0.021,0.001,0.043,0.002,0.064,0.004c0.014,0.001,0.028,0.001,0.041,0.002c0.02,0.001,0.04,0.002,0.058,0.002c0.013,0.002,0.026,0.002,0.04,0.002c0.021,0.001,0.037,0.002,0.055,0.002c0.014,0,0.026,0.001,0.039,0.001c0.016,0,0.034,0.001,0.051,0.001c0.011,0,0.023,0,0.034,0c0.017,0,0.032,0,0.05-0.001c0.01,0,0.02,0,0.032-0.001c0.016,0,0.031,0,0.046-0.001c0.011,0,0.02-0.001,0.03-0.001c0.015,0,0.03-0.002,0.045-0.002c0.009,0,0.017-0.001,0.026-0.001c0.015-0.001,0.03-0.003,0.044-0.004c0.006-0.001,0.016-0.002,0.022-0.002c0.016-0.001,0.03-0.002,0.044-0.004c0.007-0.001,0.014-0.001,0.019-0.002c0.016-0.002,0.03-0.004,0.045-0.007c0.006,0,0.009,0,0.014-0.001c0.019-0.002,0.036-0.006,0.052-0.008l0,0c0.035-0.008,0.068-0.014,0.098-0.021c0,0,0-0.002,0.002-0.002c0.012-0.002,0.025-0.005,0.039-0.01c0.002,0,0.004-0.001,0.007-0.001c0.01-0.003,0.02-0.006,0.029-0.009c0.003-0.001,0.007-0.002,0.01-0.004c0.009-0.002,0.018-0.006,0.026-0.008c0.002-0.002,0.005-0.003,0.008-0.003c0.008-0.003,0.015-0.006,0.021-0.009c0.003-0.001,0.006-0.003,0.009-0.004c0.006-0.003,0.014-0.004,0.02-0.009c0.003-0.001,0.006-0.002,0.008-0.003c0.005-0.002,0.012-0.005,0.019-0.007c0.001-0.002,0.003-0.003,0.005-0.004c0.005-0.004,0.01-0.005,0.015-0.008c0.003-0.001,0.004-0.003,0.008-0.003c0.004-0.002,0.008-0.005,0.012-0.008c0,0,0.004,0,0.005-0.002c0.004-0.003,0.008-0.006,0.012-0.008c0.001-0.002,0.002-0.002,0.004-0.003c0.003-0.003,0.007-0.004,0.01-0.008c0.002,0,0.002,0,0.002-0.002c0.003-0.001,0.007-0.005,0.011-0.008c0,0,0.001,0,0.001-0.001c0.004-0.002,0.005-0.004,0.009-0.007h0.001c0.002-0.002,0.004-0.004,0.006-0.007c0.001-0.001,0.002-0.001,0.003-0.002s0.002-0.002,0.002-0.002c0.001-0.003,0.001-0.003,0.003-0.005c0.002-0.002,0.004-0.004,0.004-0.004c0.328-0.241,0.591-0.516,0.797-0.775c0.014-0.017,0.026-0.034,0.04-0.05c0.002-0.004,0.005-0.009,0.008-0.012c0.013-0.016,0.026-0.032,0.038-0.05c0.002-0.003,0.006-0.006,0.007-0.01c0.012-0.018,0.025-0.032,0.038-0.05c0,0,0,0,0.001,0c0.039-0.055,0.075-0.109,0.109-0.159c0-0.003,0.002-0.006,0.003-0.008c0.01-0.015,0.021-0.028,0.03-0.044c0.001-0.003,0.004-0.007,0.007-0.01c0.008-0.016,0.017-0.029,0.024-0.042c0.002-0.004,0.005-0.009,0.009-0.013c0.008-0.014,0.017-0.028,0.023-0.042c0.001-0.001,0.001-0.002,0.002-0.002c0.017-0.028,0.032-0.055,0.046-0.079c0.002-0.003,0.004-0.008,0.006-0.013c0.006-0.01,0.01-0.021,0.017-0.029c0.003-0.007,0.007-0.014,0.012-0.02c0.004-0.008,0.009-0.017,0.014-0.024c0.002-0.008,0.006-0.017,0.01-0.023c0.004-0.007,0.009-0.016,0.012-0.023c0.004-0.006,0.006-0.014,0.011-0.021c0.002-0.006,0.007-0.013,0.01-0.021c0.066-0.128,0.097-0.205,0.097-0.205c0.593-1.459,0.052-2.936-0.21-3.225c-0.32-0.353-1.041-0.882-1.041-0.882s-0.288-0.241-0.751-0.144c0.349-0.049,0.791,0.091,0.966,0.558c0.277,0.734,0.376,1.335,0.212,2.33c0,0-0.26,1.387-1.384,2.233c-1.125,0.848-1.923,0.096-2.885,0.13c-0.962,0.032-1.516,0.701-1.809,1.157c-0.293,0.457-1.417,2.2-1.319,5.067c0.097,2.868,0.291,4.301,0.325,5.558c0.033,1.205,0.178,3.976-0.635,5.278c-0.815,1.303-1.628,0.65-2.2,0.309c-0.571-0.341-1.223-0.245-1.744,0.131c-0.521,0.375-0.833,1.124-0.848,3.324c-0.016,2.364,1.532,2.606,1.532,2.606s0.293,0.146,0.945-0.537c0,0,0.651-0.685,1.253-0.603c0.604,0.082,0.995,0.716,1.255,1.808c0.261,1.092,0.796,5.621,0.717,8.668c-0.034,1.271-0.62,1.286-0.36,3.617c0,0,0.409,3.13,1.401,4.089c0.995,0.962,2.378,0.781,2.706,0.75c0.324-0.032,0.7-0.26,0.7-0.26s0.309-0.197,0.537-0.374c0.23-0.182,0.522-0.428,1.011-0.277c0.489,0.146,1.645,0.896,2.557,2.571c0.915,1.678,0.496,3.317-0.26,3.521c-0.668,0.182-0.848,0.229-1.971-0.05c-1.124-0.274-1.451-0.567-1.957-0.766c-0.504-0.196-1.043-0.263-1.547,0.114c-0.505,0.373-1.345,1.057-0.343,3.32c0.961,2.174,1.692,3.797,3.518,5.623c-0.522-0.607-0.956-1.188-1.427-1.871L20.381,74.92L20.381,74.92z"/><linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="237.3721" y1="-388.3604" x2="218.8474" y2="-478.5023" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st39;" d="M22.494,7.387l-0.05,0.025C22.45,7.41,22.469,7.401,22.494,7.387z"/><linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="259.9063" y1="-479.3379" x2="259.8987" y2="-479.3752" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st40;" d="M46.028,92.85c0.13,0.014,0.26,0.026,0.391,0.041c-0.114-0.016-0.31-0.039-0.561-0.074C45.916,92.828,45.972,92.838,46.028,92.85L46.028,92.85z"/><path style="&st29;" d="M24.089,5.489c-0.649,0.36-0.7-0.016-1.141,0.017c-0.439,0.033-1.026,0.212-1.596,1.043c-0.571,0.831-0.586,1.89,0.326,1.417c0,0,0.436-0.428,0.815-0.579c0.081-0.043,0.24-0.126,0.406-0.174l0.144-0.117c0,0,0.424-0.491,1.073-0.333c0.648,0.156,1.119-0.129,1.119-0.129c1.01-0.761,1.655-2.184,1.655-2.184l0.987-1.998l-0.826-1.336c0,0-0.698,1.489-1.383,2.53C24.986,4.692,25.033,4.972,24.089,5.489L24.089,5.489z"/><path style="&st29;" d="M19.871,16.292c0,0-0.424,1.89,1.156,1.597c0,0,0.006-0.002,0.022-0.007c-0.062,0.003-0.089-0.006-0.089-0.006c-0.025-0.497,0.149-1.432,0.49-2.261c0.341-0.83,1.075-2.254,1.075-2.254s1.047-1.791,1.467-2.89c0.42-1.102,0.416-1.939,0.416-1.939s-0.8-1.019-0.915-1.176c-0.115-0.157-0.272-0.223-0.272-0.223c-0.054,0.019-0.103,0.036-0.146,0.051c0.115-0.007,0.221,0.021,0.283,0.114c0.213,0.31-0.39,2.036-0.39,2.036s-0.522,1.238-1.548,3.03C20.393,14.157,19.871,16.292,19.871,16.292L19.871,16.292z"/><linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="268.9033" y1="-394.6382" x2="249.4966" y2="-489.0725" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st41;" d="M38.185,89.697l0.166,0.02c-0.134-0.119-0.305-0.236-0.497-0.347c0.184,0.113,0.489,0.358,0.312,0.665c-0.245,0.424-0.048,0.457,0.489,0.863c0,0,0.022,0.013,0.061,0.033c-0.156-0.107-0.253-0.234-0.156-0.362c0.125-0.166,0.136-0.334,0.065-0.499L38.185,89.697L38.185,89.697z"/><linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="254.4561" y1="-391.5991" x2="235.0337" y2="-486.1104" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st42;" d="M24.437,82.749c-1.245-1.185,1.595-0.118,1.595-0.118s0.619,0.262,0.343-0.385c-0.246-0.57-1.373-1.963-2.543-3.219l0.144,0.156c0,0,2.346,2.721,2.183,2.966c-0.164,0.245-1.108-0.325-1.108-0.325s-1.401-0.539-1.206,0.13c0.143,0.491,1.059,1.271,1.536,1.649C25.109,83.372,24.798,83.09,24.437,82.749z"/><linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="262.6514" y1="-392.9692" x2="243.1559" y2="-487.8355" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st43;" d="M26.977,84.73c0.424,0.256,0.903,0.513,1.365,0.676c0,0,0.831,0.293,1.337-0.114c0.503-0.403,0.503-0.601,1.238-0.243c0,0,1.388,0.696,2.382,1.444c0.98,0.735,3.557,2.336,4.396,2.791c-0.764-0.417-3.712-2.365-4.633-2.99c-0.936-0.633-2.574-1.698-3.297-1.476c-0.554,0.172-0.474,0.396-0.804,0.555c-0.331,0.158-0.688,0.055-1.504-0.383C27.291,84.9,27.134,84.818,26.977,84.73L26.977,84.73z"/><linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="271.5479" y1="-390.9575" x2="251.1904" y2="-490.0176" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st44;" d="M39.903,91.448c0.37,0.104,0.672,0.06,0.787,0.035c-0.678,0.04-1.35-0.269-1.35-0.269s-0.067-0.021-0.165-0.061C39.413,91.268,39.689,91.385,39.903,91.448z"/><linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="274.6582" y1="-395.8442" x2="255.2559" y2="-490.2569" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset="1" stop-color="#E4E5E6"/></linearGradient><path style="&st45;" d="M44.293,92.169c0,0-1.344-0.163-1.939-0.163c0,0-0.037,0.064,0.226,0.158c-0.021-0.021-0.031-0.049,0.189,0c0.304,0.064,2.018,0.225,2.465,0.158c0.448-0.068-0.091-0.278-0.091-0.278s-0.088-0.041-0.267-0.102C44.553,92.201,44.293,92.169,44.293,92.169L44.293,92.169z"/><path style="&st34;" d="M4.662,62.045c0.085,0.143,0.198,0.432,0.462,0.725c0.146,0.16,0.266,0.072,0.162-0.525c-0.253-0.182-0.407-0.318-0.464-0.371c-0.113-0.013-0.263-0.297-0.263-0.297s-0.471-0.835-0.274-0.227c0.398,1.23,1.6,3.821,1.6,3.821l1.396,2.47c-0.999-1.803-2.299-4.633-2.44-5.013C4.691,62.223,4.577,61.904,4.662,62.045L4.662,62.045z"/><path style="&st34;" d="M1.547,32.696l0.032-0.643c0.027-0.122,0.057-0.241,0.087-0.36c0.712-2.789,1.069-3.858,1.425-4.649c0.356-0.792,0.398-0.245,0.398-0.245s0,0.209,0.136,0.234c0.135,0.023,0.324-0.32,0.494-0.826c0.17-0.504,0.604-1.745,0.693-2.212c0.135-0.704-0.051-0.358-0.115-0.354c-0.108,0.005-0.126-0.091-0.113-0.306c0,0,0.382-2.122,3.064-6.563c0.18-0.17,0.321-0.307,0.47-0.449c-0.055-0.052-0.033-0.265,0.001-0.32c0.136-0.214,0.275-0.435,0.422-0.661l-0.09,0.504c0,0-1.85,2.492-3.104,5.694c0,0-0.342,0.835-0.359,1.094c-0.025,0.154-0.104,0.739,0.152,0.582l0.065-0.048c-0.093,0.484-0.295,1.37-0.607,2.325c-0.288,0.878-0.573,1.633-0.841,2.078l-0.002-0.004c-0.08,0.067-0.098-0.016-0.146-0.21c-0.048-0.198-0.113-0.198-0.113-0.198c-0.179,0-0.324,0.202-0.41,0.359c-0.04,0.056-0.089,0.19-0.089,0.19s-0.461,0.934-1.281,4.26c-0.822,3.328-0.836,6.14-0.836,6.14s-0.084,1.309-0.21,1.379c-0.126,0.07-0.097-0.056-0.097-0.056s-0.045-0.052-0.114,0.045c0,0,0.02-0.76,0.044-0.875c0,0,0.041-0.206,0.119-0.206s0.006,0.125,0.048,0.16c0.039,0.032,0.084,0.03,0.075-0.178c-0.005-0.176,0.147-2.816,0.621-5.312L1.547,32.696L1.547,32.696z"/><path style="&st34;" d="M0.392,41.994c0-0.002,0-0.004,0-0.005c0,0,0.018,0.217,0.042,0.356l-0.003,0.01c0.078,0.357,0.187,0.357,0.187,0.357c0.008-0.096,0.087-0.273,0.183-0.458c0.007,0.106,0.007,0.231-0.004,0.375c-0.037,0.537-0.019,2.466,0.209,4.28c0.225,1.815,0.367,3.349,0.394,3.594c0.029,0.245,0.498,3.283,1.025,5.089c0.285,0.967,0.422,1.344,0.483,1.424l0.008,0.049c0,0,0.097,0.184,0.348,0.32c0,0,0.111-0.097,0.112-0.412c0.018,0.031,0.037,0.065,0.057,0.105c-0.083,0.262-0.105,0.426-0.105,0.426l0,0c-0.042-0.043-0.06-0.031-0.046,0.045c0.067,0.357,0.027,0.68-0.169,0.272c-0.198-0.403-0.8-1.832-1.307-4.251c0,0-0.531-2.659-0.795-5.084l0.042-0.105L0.989,48.29c-0.027-0.248-0.048-0.491-0.067-0.729c0,0-0.255-3.657-0.237-4.562c0.019-0.904-0.085-0.02-0.085-0.02s-0.021,0.219-0.028,0.329c-0.008,0.109-0.103,0.352-0.136-0.246C0.459,43.322,0.392,42.261,0.392,41.994L0.392,41.994z"/><path style="&st34;" d="M24.672,1.974l-0.53-0.753l-0.066-0.065c0,0-0.131-0.136-0.896,0.038l-0.11,0.022c0,0,0.38-0.094,0.168,0.191c-0.212,0.285-0.56,0.496-1.172,1.15c-0.612,0.655-0.411,0.803-0.01,0.668c0.401-0.138,1.188-0.499,2.606-1.243L24.672,1.974z"/><path style="&st34;" d="M23.106,1.21c-0.022,0.003-0.036,0.006-0.036,0.006L23.106,1.21z"/><path style="&st34;" d="M23.637,1.811c0.31-0.272,0.429-0.484,0.454-0.641l-0.015-0.014c0,0-0.131-0.136-0.896,0.038l-0.075,0.015c0.09-0.015,0.303-0.032,0.133,0.198c-0.212,0.285-0.56,0.496-1.172,1.151c-0.612,0.656-0.411,0.803-0.01,0.667c0.106-0.038,0.239-0.088,0.4-0.157C22.599,2.755,23.046,2.325,23.637,1.811z"/><path style="&st34;" d="M83.482,4.115l-0.2,0.235c0,0,0.136,0.081,0.208,0.141c0.008,0.005,0.014,0.01,0.021,0.012c-0.043-0.034-0.07-0.056-0.07-0.056c-0.023-0.109,0.004-0.223,0.014-0.297L83.482,4.115c0,0,0.055,0.002,0.143,0.011L83.482,4.115L83.482,4.115z"/><path style="&st6;" d="M62.559,90.319c0,0,1.686-0.187,3.239-0.691c1.558-0.504,1.935-0.981,1.874-1.341c-0.037-0.238-0.396-0.305-0.906-0.238c0.271-0.021,0.514,0.032,0.354,0.332c-0.313,0.582-0.861,0.782-0.861,0.782s-0.267,0.19-0.89,0.371c-0.806,0.245-1.794,0.375-2.335,0.438c-0.691,0.082-0.521-0.033-1.465,0.291c-0.023,0.016-0.047,0.025-0.065,0.043c-0.289,0.237,1.071,0.514,1.071,0.514s1.302,0.361,3.257,0.23l0.067-0.021c0.267-0.078,0.533-0.161,0.8-0.245c-2.021,0.457-3.324,0.149-3.737,0.095c-0.434-0.058-0.777-0.144-0.88-0.359C61.98,90.305,62.559,90.319,62.559,90.319L62.559,90.319z"/><path style="&st34;" d="M63.301,4.417l0.717,0.076c1.429-0.405,2.651-0.776,2.651-0.776s1.265-0.41,1.901-0.636c0.635-0.227,1.09-0.313,1.656-0.41c0.563-0.096,1.309-0.14,1.709-0.131c0.398,0.007,0.528,0.122,0.528,0.122s0.166,0.131,0.245,0.27c0.077,0.138,0.74,1.891,2.975,2.005c2.231,0.112,2.261-1.096,2.063-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.898-0.575-1.09-0.846c-0.192-0.271,0.033-0.358,0.104-0.376c0.066-0.018,2.433-0.497,2.729-0.608l0.021-0.02l-0.563-0.174c0,0-0.119,0.134-0.789,0.312c-0.67,0.179-1.233,0.246-1.742,0.313c-0.504,0.067-0.504,0.239-0.504,0.239l-0.879,1.406c0,0-0.029,0.104,0.043,0.305c0.073,0.202,0.41,0.448,0.41,0.448s0.573,0.424,0.99,0.699c0.418,0.275,0.395,0.373,0.395,0.373c-1.123,0.095-1.418-0.048-1.875-0.276c-0.445-0.223-0.76-0.729-0.922-1.086c-0.162-0.357-0.521-0.663-0.521-0.663c-0.589-0.336-1.696-0.343-2.813-0.15c-1.115,0.194-2.656,0.707-2.923,0.812c-0.271,0.104-1.616,0.551-2.309,0.729c-0.694,0.179-1.224,0.357-1.646,0.47c-0.426,0.11-3.431,1.005-4.557,1.339c-1.124,0.333-1.848,0.461-1.848,0.461c-1.688,0.171-2.193-0.134-2.193-0.134c-0.297-0.125-0.262-0.527-0.262-0.527l0.009-1.147c0,0-0.029-0.433-0.356-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.19,0.313-1.764,0.952c-0.573,0.641-0.481,1.141-0.481,1.141s0.035,0.683,0.088,1.19c0.052,0.504,0.484,0.662,0.484,0.662s-0.744,0.532-3.045,1.206c-2.209,0.648-3.682,0.774-3.682,0.774l0.678,0.254c0,0,5.468-1.015,7.148-2.616c0,0,0.624-0.293,0.02-0.88c-0.606-0.585-0.897-0.761-0.897-0.761s-0.41-0.224,0.019-0.771c0.43-0.547,0.923-0.795,1.352-0.933c0.429-0.138,1.753-0.25,2.925-0.093c0,0,0.491,0.041,0.459,0.408c-0.034,0.366-0.088,0.872-0.077,1.028c0.008,0.158,0.023,0.515,0.398,0.845c0.378,0.332,1.099,0.453,1.099,0.453s1.257,0.228,2.843-0.217c1.584-0.445,3.642-1.14,5.431-1.629L63.301,4.417L63.301,4.417z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st22;" d="M48.462,6.628c0.31,0.207,0.476,0.221,0.5,0.421c0.055,0.339-0.56,0.64-0.56,0.64l-0.006-0.011c0,0-0.431-0.157-0.484-0.664c-0.052-0.505-0.088-1.19-0.088-1.19s0.001,0.2,0.046,0.26C48.004,6.256,48.087,6.378,48.462,6.628z"/><path style="&st20;" d="M82.447,79.307l0.451,0.17c1.104-0.617,1.496-0.809,1.759-0.963c1.183-0.703,2.592-1.563,2.963-1.855c0,0,0.761-0.518,0.116,0.195s-0.969,1.007-0.969,1.007s-0.625,0.626-0.471,0.782c0,0,0.166,0.246,1.193-0.687c1.023-0.929,2.15-2.258,2.275-2.44c0.127-0.188,0.146-0.293,0.146-0.293s0.107-0.215,0.273-0.393c0.145-0.15,1.377-1.496,1.994-2.121c0,0,0.002,0.001,0.006,0.003c0.273-0.362,0.541-0.729,0.806-1.102c-0.358,0.379-1.724,1.829-2.483,2.684c0,0-0.713,0.763-0.938,1.056s-0.225,0.47-0.225,0.47s-0.117,0.196-0.392,0.519s-1.24,1.186-1.24,1.186s-0.577,0.47-0.754,0.478c-0.179,0.011,0.431-0.538,0.431-0.538s0.588-0.625,0.967-1.123c0.382-0.498,0.137-0.47,0.137-0.47s-0.186-0.049-0.986,0.459c-0.8,0.508-1.367,0.858-1.367,0.858s-1.722,0.986-2.814,1.623c-1.096,0.636-3.6,1.908-5.021,2.492c-1.43,0.588-2.162,0.715-2.035,0.527c0.127-0.186,0.461-0.459,0.461-0.459s0.399-0.4,0.399-0.803c0,0,0.128-0.586-1.604-0.223c-1.729,0.36-3.293,1.213-3.293,1.213s-2.571,1.182-1.965,1.887c0,0,0.117,0.186,0.635,0.352c0.52,0.166-0.92,0.606-0.92,0.606c-1.365,0.448-2.413,0.651-3.74,0.926c-1.963,0.403-3.564,0.761-4.165,0.894c-0.165,0.035-0.253,0.059-0.253,0.059s-1.212,0.292-3.229,1.072c-2.015,0.783-5.972,1.43-5.972,1.43s-2.542,0.293-2.777,0.627c-0.234,0.331,0.177,0.499,0.177,0.499s0.362,0.224,1.671,0.283c0,0,0.451,0,0.471,0.036c0.018,0.039,0.046,0.068-0.235,0.156c-0.286,0.088-0.854,0.314-2.778,0.558c-1.936,0.245-1.896-0.067-1.896-0.067s-0.01-0.076,0.078-0.216c0.087-0.134,0.009-0.369-0.293-0.535c0,0-0.419-0.272-1.829-0.262c-1.408,0.009-4.212,0.017-6.833-0.14c-2.374-0.143-5.59-0.551-6.099-0.664c0,0-0.117-0.029-0.206-0.117c-0.088-0.09-0.646-0.422-1.164-0.733c-0.517-0.313-2.073-0.907-2.073-0.907s-2.011-0.783-1.945-0.521c0.015,0.063,0.13,0.153,0.268,0.246c0.351,0.188,0.704,0.375,1.06,0.56l0.002-0.002c0,0-0.743-0.402-0.538-0.402s0.438,0.109,0.438,0.109s1.213,0.332,1.966,0.686c0.753,0.353,1.407,0.83,1.407,0.83s0.929,0.549,2.319,0.732c1.346,0.182,3.174,0.389,3.777,0.448l0.594-0.272l0.433,0.354c1.106,0.068,2.575,0.146,2.575,0.146s2.976,0.111,4.605-0.019c0.733-0.063,0.507,0.317,0.507,0.317s-0.214,0.354,0.206,0.529c0,0,0.771,0.439,3.343,0.157c2.573-0.286,3.138-0.862,3.138-0.862s0.299-0.275-0.351-0.398c-0.513-0.1-0.513-0.051-1.175-0.117c-0.665-0.067-0.998-0.205-0.557-0.323c0.441-0.114,1.174-0.175,1.174-0.175s2.249-0.313,4.066-0.783c0,0,1.938-0.458,3.861-1.134c0.756-0.265,1.395-0.459,1.887-0.599l0.438-0.644l0.644,0.372c0.065-0.014,0.103-0.021,0.103-0.021s2.306-0.539,3.274-0.703c0.966-0.168,3.154-0.637,4.087-1.086c0.928-0.448,1.396-0.805,1.505-1.075c0.107-0.272-0.393-0.431-0.393-0.431s-0.588-0.138-0.508-0.34c0.075-0.205,0.293-0.382,1.213-0.793c0.918-0.41,2.07-0.859,3.227-1.144c1.154-0.282,0.732,0.194,0.732,0.194s-0.692,0.705-0.783,0.979c-0.086,0.273,0.029,0.285,0.119,0.333c0.088,0.05,0.646,0.028,1.022-0.067c0.383-0.099,3.464-1.271,5.341-2.347c0.049-0.026,0.094-0.054,0.139-0.08L82.447,79.307z"/><linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="221.1826" y1="-454.5649" x2="221.373" y2="-454.5649" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".36" stop-color="#6B6B6B"/><stop offset=".5192" stop-color="#686868"/><stop offset=".6377" stop-color="#5F5F5F"/><stop offset=".7431" stop-color="#4E4E4E"/><stop offset=".8408" stop-color="#383838"/><stop offset=".9324" stop-color="#1B1B1B"/><stop offset="1" stop-color="#000"/></linearGradient><path style="&st13;" d="M7.432,68.01l0.178,0.131c-0.105-0.099-0.167-0.155-0.167-0.155s-0.008,0.003-0.024,0.003C7.423,67.993,7.429,68.002,7.432,68.01L7.432,68.01z"/><linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="221.4043" y1="-449.8027" x2="316.0254" y2="-449.8027" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#808080"/><stop offset=".0868" stop-color="#7A7A7A"/><stop offset=".3817" stop-color="#828282"/><stop offset=".5185" stop-color="#808080"/><stop offset=".5677" stop-color="#797979"/><stop offset=".6027" stop-color="#6E6E6E"/><stop offset=".608" stop-color="#6B6B6B"/><stop offset="1" stop-color="#4E4E4E"/></linearGradient><path style="&st7;" d="M90.412,59.954l-0.371-0.021c-1.807,1.463-2.342,1.938-3.781,2.955c0,0-1.644,1.228-3.44,2.196c-1.804,0.97-3.919,0.853-3.919,0.853s-0.573-0.062-0.295-0.477c0.275-0.415,0.634-1.425,0.771-1.938c0.141-0.516,0.415-1.82-0.633-2.235s-3.018,0.196-3.018,0.196s-4.525,1.205-6.371,3.23c-1.793,1.969-0.286,2.846-0.286,2.846s0.702,0.49,1.386,0.73c0.645,0.229,0.516,0.436,0.354,0.555c0,0-2.021,1.287-4.408,1.974c0,0-3.268,1.001-6.441,1.206c-3.154,0.203-4.495,0.283-4.495,0.283l-0.399,0.379l-0.758-0.252c-1.283,0.154-3.455,0.463-5.596,0.979c-2.622,0.64-5.123,1.147-6.903,2.296c0,0-1.333,0.887-0.566,1.746c0.765,0.862,1.565,1.23,1.565,1.23s0.472,0.207,0.464,0.336c-0.009,0.164-0.015,0.309-0.367,0.512c0,0-1.394,0.814-4.108,0.859c-2.714,0.045-3.911,0.021-4.707-0.695c-0.658-0.591,0.165-1.844,0.165-1.844s0.33-0.612,0-1.453c-0.33-0.84-2.218-0.854-2.218-0.854l-2.615-0.134c-3.095-0.081-7.182-0.427-9.001-0.653c0,0-0.012-0.002-0.033-0.006l-0.006,0.166l-0.721-0.303c-1.139-0.221-3.243-0.668-4.075-1.084c-0.759-0.38-1.167-0.313-1.066-1.102c0.101-0.769-0.753-1.836-0.753-1.836s-1.188-1.287-2.257-2.086c-1.069-0.804-1.523-0.564-1.523-0.564s-0.484,0.258-0.049,1.296c0.436,1.04,0.86,1.403,0.86,1.403s0.208,0.22,0.089,0.279c-0.118,0.06-0.484-0.219-0.789-0.478c-0.253-0.21-1.885-1.742-2.456-2.276l0.105,0.356c0.019,0.028,0.035,0.062,0.052,0.086c0.184,0.291,0.855,1.269,2.155,2.28c1.549,1.213,1.559,0.729,1.559,0.729s0.061-0.399-0.297-0.84c-0.359-0.44-0.934-1.373-0.791-1.715c0.144-0.339,0.309-0.31,0.309-0.31s0.133-0.051,0.596,0.299c0.462,0.351,1.498,1.076,2.011,1.703c0.513,0.623,0.48,1.181,0.48,1.181s-0.102,0.563,0.453,1.17c0.553,0.604,1.733,1.714,5.859,2.351c0.025,0.004,0.034,0.006,0.059,0.01l0.193-0.551l0.573,0.663c3.598,0.521,5.555,0.563,5.555,0.563s4.709,0.162,5.982,0.162c1.272,0,1.035,0.666,1.035,0.666s-0.072,0.359-0.225,0.646c-0.155,0.287-0.524,1.365-0.144,1.939c0,0,0.585,1.427,4.381,1.527c0,0,3.324,0.268,5.643-0.688c2.319-0.954,0.226-2.275,0.226-2.275s-0.794-0.481-1.13-0.739c-0.308-0.234-0.184-0.481-0.121-0.646c0.06-0.162,0.297-0.359,0.563-0.492c0.266-0.134,1.239-0.654,5.365-1.722c4.124-1.069,6.587-1.183,6.587-1.183s0.02-0.002,0.055-0.004l0.338-0.656l0.854,0.556c0.732-0.06,1.681-0.129,2.526-0.171c1.691-0.082,4.341-0.471,5.879-0.807c1.54-0.343,3.869-1.062,5.592-1.951c1.725-0.895,1.809-1.519,1.809-1.519s0.328-0.475-0.392-0.995c-0.719-0.523-1.036-0.382-1.673-1.027c-0.637-0.646,0.557-1.62,0.557-1.62s0.612-0.861,4.021-2.175c3.403-1.313,3.979-0.873,4.153-0.729s0.195,0.615,0.123,0.935c-0.069,0.317-0.494,1.455-0.721,2.053c-0.227,0.594-0.316,1.406,0.605,1.601c0.923,0.194,2.215-0.008,3.428-0.442c2.893-1.033,3.756-2.295,8.534-5.764c0.012-0.008,0.021-0.017,0.03-0.021L90.412,59.954l0.689,0.108c1.978-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.595-1.026,0.027,0.89,0.027,0.89s-0.32,1.516,0.19,2.077c0.405,0.445,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.061c0.408-1.875,0.185-2.248,0.185-2.248s-0.246-0.389-0.093-0.852c0.154-0.459,1.158-3.047,1.98-4.01l0.502-0.563c0-0.008,0.002-0.02,0.002-0.027l-0.224-0.557l0.304-0.512c0,0-0.279,0.322-1.404,2.177c-1.266,2.087-1.467,3.771-1.467,3.771s-0.119,0.653-0.054,1.034c0.063,0.355,0.188,0.519,0.192,0.622c0.009,0.104-0.073,0.959-0.508,1.773c-0.438,0.814-0.815,1.031-0.815,1.031s-0.756,0.545-0.86,0.157c-0.104-0.39-0.074-0.72-0.035-0.966c0.035-0.248,0.289-1.579,0.252-2.072c-0.035-0.494-0.479-0.098-0.479-0.098s-0.104,0.119-0.298,0.366s-1.288,1.637-1.705,2.125c-0.988,1.157-1.886,1.989-4.292,3.93c-0.007,0.003-0.015,0.011-0.019,0.015L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="214.5928" y1="-431.356" x2="314.4043" y2="-431.356" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#555555"/><stop offset="1" stop-color="#231F20"/></linearGradient><path style="&st11;" d="M1.193,48.543l0.104,0.975c0.235,0.285,0.577,0.677,1.071,1.187c1.084,1.121,1.427,0.416,1.427,0.416s0.253-0.705-0.054-1.985C3.434,47.85,3.488,47.09,4.066,47.11c0.578,0.019,2.258,0.361,2.782,1.752c0,0,0.217,0.649,0.018,1.479c-0.2,0.834-0.162,1.57-0.018,2.295c0.145,0.725,0.759,1.407,1.464,1.971c0.706,0.562,2.746,1.535,4.734,1.66c1.987,0.127,2.601,0.021,2.601,0.021l0.746-0.767l0.134,0.668c0.812-0.09,2.116-0.229,3.62-0.393c2.528-0.271,4.227-0.544,5.798-0.308c1.573,0.235,2.079,1.462,2.079,1.462s0.108,0.314-0.253,0.544c-0.349,0.224-0.749,0.547-0.948,0.89c-0.199,0.346-0.411,1.068,0.16,2.035c0.572,0.963,2.142,1.592,3.478,1.432c1.335-0.155,3.335-0.67,4.52-0.979c1.287-0.337,2.424-0.971,2.572-1.98c0.147-1.008-1.534-2.295-1.534-2.295s-0.812-0.609-0.91-0.75c-0.1-0.139,0.099-0.197,0.099-0.197s0.949-0.229,1.357-0.414c0.404-0.189,1.522-0.646,3.353-1.219s5.608-1.248,5.608-1.248s2.084-0.332,4.685-0.543l0.622-0.702l0.485,0.625c0.409-0.024,0.825-0.046,1.243-0.063c3.572-0.129,5.344-0.554,7.242-0.979c1.897-0.427,4.568-1.978,4.965-2.276c0.396-0.295,1.229-0.66,1.396-1.957c0.168-1.295-1.364-2.157-1.364-2.157s-1.218-0.644-1.475-0.93c-0.258-0.287-0.02-0.562-0.02-0.562s0.689-1.485,2.896-2.354c2.205-0.872,3.689-1.107,4.618-1.208c0.932-0.099,1.245,0.237,1.374,0.396c0.128,0.157,0.128,0.485,0.021,0.821c-0.102,0.308-0.444,1.038-0.645,1.395c-0.197,0.356-0.523,1.216-0.316,1.622c0.208,0.405,0.843,0.593,1.662,0.445c0.821-0.149,2.988-0.761,4.888-1.553c1.9-0.792,5.073-2.345,5.073-2.345s0.009-0.004,0.022-0.012l0.086-0.729l0.729,0.295c1.02-0.562,2.764-1.58,4.01-2.631c1.871-1.573,3.699-3.225,4.166-3.639c0.465-0.417,0.892-0.752,1.307-0.732c0.414,0.021,0.732,0.317,0.988,1.434c0.258,1.118,0.308,2.038,0.426,2.582c0.117,0.543,0.285,1.175,0.931,1.304c0.646,0.129,1.513-0.434,1.838-0.713c0.33-0.276,0.92-1.176,0.882-2.382c0,0,0.068-1.604-0.761-3.127c0,0-0.351-0.614-0.479-0.782c-0.088-0.118-0.155-0.238-0.01-0.525c0.148-0.286,0.467-0.821,1.062-1.156c0.448-0.256,0.88-0.316,1.128-0.396c0,0,0.275-0.067,0.626-0.261l-0.126-0.412l0.289,0.316c0.404-0.239,0.652,0.045,0.652,0.045l-0.392-0.501l0.119-0.484c0,0-0.304-0.163-0.685-0.088c-0.383,0.078-0.42,0.362-1.014,0.458c-0.593,0.096-1.275,0.306-1.945,1.319c-0.67,1.011,0,2.271,0,2.271s0.359,0.592,0.533,0.896c0.172,0.306,1.066,2.215,0.037,3.608c0,0-0.552,0.643-1.525,0.86c-0.86,0.19-0.642-0.816-0.729-1.355c0,0-0.129-2.281-1.237-3.588c-0.976-1.146-2.746,0.888-3.629,1.566c-0.822,0.629-3.228,3.112-6.684,4.925l-0.51,0.892l-0.324-0.472c-1.658,0.827-5.418,2.656-7.87,3.514c0,0-1.875,0.762-2.64,0.782c0,0-0.17,0.006-0.034-0.179c0.133-0.185,0.276-0.322,0.507-0.737c0.23-0.418,0.646-1.357,0.646-2.327c0-0.969-1.119-1.917-2.68-1.748c-1.561,0.167-3.052,0.6-4.849,1.292c-1.796,0.692-3.343,2.159-3.55,3.375c-0.209,1.216,1.105,1.92,1.105,1.92s1.484,0.751,1.674,1.157c0.188,0.406,0.049,0.783,0.049,0.783s-0.129,0.406-0.783,0.782c-0.649,0.377-2.42,1.287-2.42,1.287s-2.207,1.217-5.562,1.512c0,0-3.058,0.26-4.817,0.348c-0.022,0.002-0.046,0.002-0.069,0.003l-0.541,0.53l-0.587-0.449c-1.64,0.136-3.54,0.359-3.54,0.359s-4.29,0.609-8.219,1.822c-3.336,1.027-3.971,1.594-3.971,1.594s-0.711,0.596-0.118,1.453c0,0,0.341,0.539,1.03,1.08c0.685,0.541,1.237,1.057,1.159,1.317c-0.08,0.265-0.29,0.382-0.29,0.382s-0.961,0.856-4.894,1.518c0,0-2.531,0.488-3.31-0.275c-0.778-0.766-0.435-1.279-0.435-1.279s0.052-0.173,0.62-0.527c0,0,0.951-0.596,0.647-1.727c-0.303-1.135-2.129-2.545-4.101-2.533c0,0-2.303,0.006-8.196,0.762c0,0-0.008,0-0.027,0.005l-0.204,0.501l-0.605-0.393c-0.324,0.039-0.713,0.076-1.114,0.107c-1.012,0.07-2.477-0.057-4.3-0.596c-1.824-0.543-2.963-1.535-3.126-2.133c-0.114-0.412,0.035-0.996,0.035-0.996S7.62,50.2,7.405,49.115c-0.22-1.083-0.582-1.934-1.631-2.567c-1.048-0.632-1.643-0.522-1.643-0.522s-0.939-0.144-0.904,1.446c0.037,1.59,0.235,2.256,0.235,2.256s0.181,0.562-0.108,0.635c-0.288,0.072-0.74-0.361-0.74-0.361s-1.021-0.924-1.619-1.688l0.048,0.066l-0.214,0.525c0,0,0.067,0.115,0.266,0.375L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="214.8965" y1="-410.8818" x2="306.501" y2="-410.8818" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#A0A0A0"/><stop offset=".0769" stop-color="#656767"/><stop offset="1" stop-color="#717375"/></linearGradient><path style="&st1;" d="M91.075,11.742l0.183,0.846c0,0-0.563,0.313-1.678,0.613c-1.113,0.3-2.188,0.801-2.188,0.801s-0.89,0.289-0.551,1.013c0.338,0.726,0.838,1.076,0.838,1.076s0.711,0.69,0.736,1.213c0.021,0.526-0.199,0.765-0.764,1.076c-0.563,0.313-1.075,0.375-1.075,0.375s-1.338,0.24-2.001-0.387c-0.663-0.626-0.787-1.663-0.787-1.663s-0.05-0.876-1.148-1.251c-1.102-0.375-2.453,0.425-2.453,0.425s-1.063,0.563-2.2,1.3c-1.14,0.738-3.291,1.64-4.642,2.114l-0.152,0.699l-0.758-0.382c-1.422,0.489-3.271,1.109-3.271,1.109S66.652,21.645,65,21.871c-1.648,0.224-2.016-0.014-2.238-0.238c-0.228-0.224,0.039-1.012,0.039-1.012s0.674-1.376,0.348-2.09c-0.324-0.714-2.451-0.9-2.486-0.9c-0.04,0-2.318-0.265-4.451,0.932c-1.895,1.062-2.143,1.642-2.143,1.642s-0.604,0.938,0.113,1.867c0.807,1.051,1.879,1.146,1.879,1.146s1.021,0.079,1.258,0.38c0.24,0.299,0.076,0.626,0.076,0.626s-0.336,0.925-2.228,1.312c0,0-3.181,0.933-9.113,1.776l-0.582,0.579c-3.743,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.972-2.898,1.269c-1.739,0.297-2.396,0.35-3.429-0.47c-0.91-0.721-0.298-1.863,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.112c0.079-0.204,0.032-0.377,0.032-0.377l-0.58-0.534c-2.005-1.33-9.883,0.063-9.883,0.063s0,0.002,0,0l-1.341,0.289l-0.673-0.435c0,0-2.291,0.604-4.876,0.589c-2.712-0.014-1.27-2.128-1.27-2.128s0.638-1.118,0.75-1.764c0,0,0.224-1.745-1.42-1.631c-1.645,0.112-1.968,1.546-1.968,1.546s-0.112,0.801-0.089,1.392c0.021,0.594-0.002,1.847-0.742,2.56c-0.737,0.713-1.529,0.495-1.529,0.495s-1.331-0.582-1.595-0.718c-0.274-0.142-0.517-0.151-0.751-0.066c-0.02,0.007-0.039,0.018-0.057,0.029l-0.175,0.75l0.025-0.623c-0.156,0.176-0.271,0.42-0.271,0.42l0.088,0.327l-0.248,0.565c-0.002,0.012-0.005,0.023-0.006,0.035l0.008,0.003c0,0,0.087-0.196,0.222-0.357l0.182-0.369L1.493,32.94c0.055-0.044,0.112-0.07,0.172-0.074c0.281-0.017,0.629,0.158,0.629,0.158s1.135,0.611,1.642,0.716s0.875-0.065,1.205-0.292c0.527-0.365,1.143-1.121,1.4-1.839c0.229-0.646,0.279-2.394,0.279-2.394l0.004,0.014c0,0,0-0.421-0.011-0.518c-0.012-0.098-0.075-0.553,0.204-0.783c0.278-0.234,0.459-0.347,1.144-0.364c0.68-0.017,0.886,0.38,0.886,0.38S9.28,28.269,9.28,28.48c0,0.21-0.068,0.34-0.068,0.34s-0.371,0.626-0.5,0.934c-0.13,0.307-0.636,1.323-0.489,2.177c0.148,0.852,1.479,1.251,1.479,1.251s1.062,0.25,2.575,0.027l3.12-0.503l0.543-0.624l0.218,0.474c0.805-0.147,2.14-0.369,3.583-0.511c2.326-0.228,4.787-0.262,5.821-0.132c0,0,0.484,0.061,0.405,0.234c-0.062,0.136-0.421,0.415-0.421,0.415s-0.135,0.081-0.654,0.667s-0.671,1.155-0.693,1.661c-0.024,0.505,0.516,1.995,2.415,2.394c1.901,0.397,4.077-0.341,4.077-0.341s1.427-0.314,2.786-1.674c1.41-1.411,0.012-3.108,0.012-3.108s-0.22-0.304-0.647-0.442c0,0-0.187-0.05-0.079-0.17c0.108-0.12,0.37-0.647,1.37-0.905c1-0.257,3.977-1.198,11.065-2.135l0.274-0.617l0.874,0.459c2.708-0.373,4.551-0.694,7.827-1.454c0,0,3.04-0.539,3.675-1.651c0.368-0.65,1.032-1.539-0.045-2.434c0,0-0.125-0.161-0.791-0.312c-0.666-0.151-1.179-0.252-1.738-0.653c-0.563-0.403-0.551-0.869-0.551-0.869s-0.047-0.445,0.862-0.958c0,0,0.851-0.623,2.54-1.158c1.691-0.533,3.648-0.296,3.648-0.296s0.82,0.089,0.685,0.643c-0.14,0.555-0.604,1.482-0.622,1.959c-0.021,0.474,0.012,1.027,0.938,1.414c0.931,0.386,2.267,0.266,2.267,0.266s1.386-0.069,3.647-0.801c2.265-0.731,4.594-1.573,4.594-1.573l-0.094-0.483l0.971,0.173c0.591-0.22,1.406-0.539,2.285-0.936c1.801-0.81,2.656-1.488,3.48-1.958c0,0,1.815-1.118,2.887-1.088c0,0,0.25-0.009,0.272,0.32c0.022,0.329,0.104,0.814,0.218,1.096c0.111,0.281,0.734,1.822,2.729,2.048c1.993,0.228,2.846-1.118,2.846-1.118s0.683-1.049-0.493-2.296c0,0-0.961-1.028-0.99-1.107c0,0-0.104-0.155,0.168-0.233c0.269-0.078,3.152-0.884,4.268-1.398c0,0,0.012-0.005,0.036-0.015l-0.271-0.485l0.535,0.365c0.202-0.101,0.449-0.246,0.544-0.395c0.171-0.271-0.054-0.797-0.054-0.797l0.006-0.007c-0.133-0.184-0.266-0.366-0.4-0.546l-0.606-0.256l-0.06,0.033L91.075,11.742"/><path style="&st34;" d="M8.12,16.324l-0.291,0.435c0.134-0.023,0.244-0.056,0.244-0.056s0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.872-0.523,1.274-1.381l0.361-1.005c0,0,0.291-0.972,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.196-0.671,1.196s-0.318,0.722,0.193,0.957c0,0,0.24,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506c-0.313-0.23-0.602-0.444-0.602-0.444c-2.388,0.442-4.168,0.995-4.775,1.226c-0.609,0.23-0.62,0.082-0.62,0.082c-0.211-0.248,0.435-1.022,0.435-1.022s0.655-0.894,0.913-1.715c0.259-0.82-0.892-0.707-0.892-0.707c-0.758,0.121-1.303,0.48-1.93,1.236c-0.486,0.586-0.782,1.389-0.893,1.814c-0.071,0.267-0.193,0.515-0.193,0.515s-0.091,0.165-0.45,0.322c-0.416,0.182-1.228,0.396-1.228,0.396s-0.54,0.045-0.931-0.15c-0.24-0.118-0.901,0.05-0.901,0.05l0.091-0.504l-0.082-0.032l-0.683,0.383c-0.115,0.189-0.228,0.379-0.341,0.569c-0.063,0.146-0.179,0.475,0.044,0.51c0.05,0.008,0.113,0.008,0.164,0.008L8.12,16.324L8.12,16.324z"/><path style="&st34;" d="M13.295,9.19c0,0,0.342-0.271,0.342-0.026c0,0.248-0.333,0.69-0.333,0.69s-0.107,0.134-0.172,0.134C13.068,9.987,13.15,9.516,13.295,9.19L13.295,9.19z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st34;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.838-0.828c-0.037-0.037-0.054-0.055-0.157-0.112C11.277,12.081,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="&st28;" d="M77.807,85.745c0,0-1.75,0.806-3.396,1.603c-1.647,0.803-2.25,1.14-2.25,1.14s-0.088,0.049-0.031,0.082c0.056,0.028-0.008,0.063-0.008,0.063c-0.847,0.409-2.703,1.07-2.703,1.07s-0.167,0.057-0.157,0.02c0.006-0.041,0.199-0.105,0.199-0.105s0.381-0.146,0.283-0.217c-0.098-0.072-1.21,0.305-1.21,0.305s-1.949,0.621-2.894,0.887c-0.941,0.269-2.75,0.735-2.75,0.735c-1.201,0.298-3.75,0.798-4.315,0.901c-0.562,0.104-0.417,0.064-0.417,0.064s0.492-0.189-0.411-0.226c-1.146-0.05-2.362,0.112-3.612,0.288c-1.25,0.18-1.178,0.324-1.178,0.324s-0.04,0.154,0.708,0.14c0.752-0.019,0.534,0.046,0.534,0.046c-1.396,0.202-4.2,0.238-4.2,0.238l0.005,0.01c0.456,0.014,0.916,0.018,1.376,0.018c0.608,0,1.218-0.01,1.822-0.031c0.241-0.021,1.483-0.15,1.925-0.244c0.486-0.105-0.093-0.105-0.093-0.105l-0.74-0.023c0,0-0.776-0.026-0.052-0.158c0.729-0.133,1.834-0.192,2.388-0.252c0.83-0.094,0.541,0.105,0.541,0.105l-0.04,0.023c0,0,0.014,0.094,0.528,0.066c0.515-0.024,4.721-0.804,7.069-1.487c2.347-0.688,4.102-1.255,4.102-1.255s0.157-0.055,0.066,0.025c-0.094,0.078-0.463,0.2-0.463,0.2s-0.595,0.3,0.844-0.108c0.066-0.02,0.134-0.039,0.197-0.06c1.234-0.469,2.446-0.983,3.635-1.543c0.029-0.028,0.131-0.146-0.021-0.101c-0.172,0.056,0-0.065,0.187-0.131c0.184-0.066,2.267-1.162,3.363-1.608l0.002,0.003c0.394-0.227,0.781-0.455,1.17-0.691L77.807,85.745L77.807,85.745z"/><linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="217.6563" y1="-436.751" x2="217.6563" y2="-436.751" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st46;" d="M3.893,50.249L3.893,50.249L3.893,50.249z"/><linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="214.3262" y1="-436.5107" x2="322.8717" y2="-424.4851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st47;" d="M1.193,48.543l0.107,0.98c0.236,0.285,0.579,0.675,1.067,1.181c1.084,1.121,1.428,0.416,1.428,0.416s0.072-0.201,0.092-0.586c-0.042,0.216-0.209,0.403-0.788-0.056c-0.298-0.237-0.688-0.627-1.076-1.049c-0.326-0.326-0.723-0.742-1.021-1.117l0.048,0.065l-0.213,0.526c0,0,0.069,0.115,0.268,0.376L1.193,48.543L1.193,48.543z"/><linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="213.8887" y1="-436.4771" x2="336.8819" y2="-422.851" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#FFF"/><stop offset=".078" stop-color="#F4F4F4"/><stop offset=".3807" stop-color="#CECECE"/><stop offset=".5396" stop-color="#BFBFBF"/><stop offset=".8357" stop-color="#7C7C7C"/><stop offset=".8996" stop-color="#A8A8A8"/><stop offset=".9093" stop-color="#9A9A9A"/><stop offset=".9327" stop-color="#7D7D7D"/><stop offset=".9558" stop-color="#686868"/><stop offset=".9785" stop-color="#5B5B5B"/><stop offset="1" stop-color="#575757"/></linearGradient><path style="&st48;" d="M3.741,49.133c-0.006-0.027-0.013-0.054-0.02-0.078c0.012,0.088,0.028,0.179,0.043,0.272c0,0,0.094,0.394,0.12,0.753C3.87,49.813,3.83,49.498,3.741,49.133z"/><linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="411.2539" y1="557.002" x2="507.2363" y2="537.6277" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset="1" stop-color="#BFC0C2"/></linearGradient><path style="&st49;" d="M99.696,28.566l0.29,0.316c0.406-0.238,0.654,0.045,0.654,0.045l-0.386-0.494c-0.383,0.082-1.093,0.256-2.233,0.61c0,0-1.353,0.594-1.59,1.532c-0.016,0.332,0.049,0.641,0.116,0.876c0.753,1.429,0.913,1.666,0.913,1.666c0.499,1.091,0.422,1.993,0.25,2.824c-0.188,0.921-1.188,1.668-1.794,1.842c-0.608,0.171-0.953,0-1.14-0.483c-0.188-0.485-0.157-0.845-0.438-2.34c-0.28-1.499-0.653-2.2-1.216-2.372c-0.563-0.173-1.313,0.468-1.749,0.811c-0.438,0.344-2.417,2.152-2.417,2.152s-2.324,2.091-5.743,4.026c-3.417,1.935-7.69,3.418-7.69,3.418s-2.842,1.092-3.525,0.998c-0.688-0.093-0.516-0.718-0.297-1.076c0.219-0.36,0.516-0.937,0.766-1.545c0.313-0.756,0.201-1.654-0.359-1.967c-0.562-0.311-1.248-0.468-3.523,0.094s-3.197,1.076-3.838,1.451c-0.643,0.376-1.576,1.233-1.842,1.716c-0.266,0.484-0.563,0.983,0.126,1.576c0.688,0.594,0.763,0.485,1.56,1.046c0.797,0.562,0.922,0.64,0.969,1.466c0.045,0.827-0.766,1.341-0.766,1.341s-3.123,2.082-6.602,2.777c-2.34,0.469-6.833,0.639-6.833,0.639s-1.327-0.045-5.384,0.547c-4.056,0.594-6.787,1.514-7.738,1.856c-0.952,0.343-2.34,0.81-3.136,1.17c-0.795,0.358-0.375,0.89-0.203,1.015c0.172,0.123,1.185,1.074,1.498,1.354c0.312,0.282,1.466,1.279,0.108,2.108c-1.356,0.826-3.603,1.264-3.603,1.264s-3.121,0.654-4.119,0.234c-1.001-0.422-1.2-0.778-1.452-1.358c-0.313-0.718-0.016-1.263,0.794-1.78c0.77-0.486,0.469-1.199,0.469-1.199c-0.983-1.9-3.058-2.058-4.774-1.936c-2.72,0.198-5.358,0.471-7.425,0.734c-3.059,0.39-4.541-0.063-5.992-0.516c-1.452-0.453-2.997-1.529-3.154-2.498c-0.027-0.097-0.039-0.199-0.042-0.307c-0.078-0.758,0.074-1.146,0.184-1.784c0.108-0.625-0.043-1.532-0.084-1.758c-0.008-0.026-0.016-0.058-0.023-0.085c-0.507-1.304-1.725-1.903-2.668-2.058c-0.953-0.157-0.983,0.857-0.983,0.857s-0.002,0.012-0.006,0.04c0.078-0.208,0.222-0.315,0.444-0.31c0.577,0.02,2.259,0.361,2.781,1.754c0,0,0.218,0.648,0.019,1.479c-0.199,0.832-0.162,1.571-0.019,2.295c0.145,0.725,0.759,1.408,1.465,1.969c0.704,0.562,2.745,1.535,4.734,1.66c1.814,0.117,2.483,0.037,2.587,0.023l0.759-0.768l0.135,0.666c0.81-0.088,2.115-0.229,3.619-0.394c2.529-0.271,4.227-0.541,5.8-0.306c1.572,0.232,2.078,1.463,2.078,1.463s0.107,0.313-0.253,0.542c-0.349,0.226-0.75,0.548-0.947,0.891c-0.2,0.345-0.411,1.066,0.159,2.033c0.572,0.965,2.142,1.595,3.478,1.435c1.336-0.158,3.336-0.672,4.521-0.98c1.286-0.336,2.424-0.969,2.572-1.979c0.148-1.009-1.534-2.297-1.534-2.297s-0.81-0.611-0.909-0.75c-0.1-0.14,0.099-0.197,0.099-0.197s0.95-0.229,1.356-0.416c0.403-0.19,1.523-0.644,3.353-1.217c1.831-0.572,5.609-1.248,5.609-1.248s2.09-0.332,4.694-0.543l0.612-0.705l0.493,0.627c0.406-0.023,0.819-0.045,1.235-0.061c3.572-0.129,5.343-0.555,7.24-0.979c1.897-0.426,4.569-1.979,4.965-2.276c0.396-0.296,1.229-0.662,1.395-1.958c0.17-1.294-1.363-2.157-1.363-2.157s-1.218-0.643-1.476-0.929c-0.256-0.288-0.019-0.562-0.019-0.562s0.689-1.485,2.896-2.355c2.207-0.872,3.69-1.106,4.619-1.207c0.931-0.099,1.247,0.237,1.375,0.395c0.128,0.158,0.128,0.485,0.021,0.821c-0.101,0.308-0.443,1.039-0.644,1.396c-0.199,0.356-0.522,1.216-0.317,1.622c0.211,0.405,0.842,0.592,1.662,0.444c0.822-0.147,2.987-0.761,4.889-1.553c1.897-0.793,5.074-2.344,5.074-2.344s0.01-0.005,0.021-0.013l0.086-0.729l0.729,0.296c1.021-0.562,2.764-1.582,4.01-2.63c1.871-1.574,3.699-3.225,4.166-3.641c0.465-0.415,0.89-0.751,1.305-0.732c0.416,0.021,0.734,0.318,0.99,1.434c0.258,1.119,0.306,2.038,0.426,2.583c0.117,0.542,0.285,1.176,0.929,1.305c0.644,0.128,1.513-0.436,1.841-0.713c0.326-0.277,0.918-1.176,0.879-2.383c0,0,0.068-1.605-0.762-3.127c0,0-0.348-0.614-0.477-0.782c-0.088-0.119-0.155-0.238-0.008-0.523c0.146-0.288,0.465-0.821,1.059-1.157c0.449-0.256,0.881-0.316,1.128-0.396c0,0,0.28-0.069,0.636-0.266L99.696,28.566L99.696,28.566z"/><path style="&st23;" d="M1.547,32.696l-0.05,0.239c0.053-0.041,0.111-0.068,0.17-0.072c0.281-0.018,0.629,0.158,0.629,0.158s1.135,0.61,1.642,0.716c0.507,0.105,0.875-0.065,1.205-0.292c0.25-0.174,0.521-0.434,0.763-0.737c-0.29,0.29-0.725,0.548-1.365,0.595c0,0-0.571-0.049-1.419-0.587c-0.846-0.537-1.327-0.231-1.729,0.105l0,0l-0.249,0.564c-0.001,0.013-0.003,0.023-0.006,0.036l0.009,0.001c0,0,0.087-0.192,0.217-0.352L1.547,32.696L1.547,32.696z"/><path style="&st4;" d="M6.387,31.961c0.059-0.12,0.112-0.238,0.155-0.354c0.05-0.14,0.09-0.334,0.125-0.55c-0.096,0.44-0.223,0.73-0.223,0.73S6.428,31.853,6.387,31.961L6.387,31.961z"/><path style="&st4;" d="M6.807,28.654c-0.038,0.439-0.038,0.987-0.038,1.493l0,0c0.04-0.509,0.052-0.935,0.052-0.935l0.004,0.014c0,0,0-0.421-0.011-0.518C6.811,28.695,6.809,28.677,6.807,28.654z"/><linearGradient id="SVGID_30_" gradientUnits="userSpaceOnUse" x1="413.5137" y1="516.4121" x2="417.999" y2="516.4121" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#E2E3E4"/><stop offset=".5055" stop-color="#FFF"/></linearGradient><path style="&st50;" d="M8.12,16.324l-0.291,0.435c0.087-0.014,0.089-0.007,0.244-0.056c0,0,0.404-0.066,1.112,0.12c0.917,0.244,2.067-0.496,2.067-0.496s0.272-0.164,0.583-0.458c-0.4,0.24-1.385,0.762-2.132,0.585c-0.961-0.229-0.994-0.017-1.336-0.049c-0.292-0.028-0.292-0.11-0.275-0.314c0.002-0.032,0.023-0.054,0.03-0.092c0.05-0.261,0.339-0.689,0.339-0.689l-0.684,0.383c-0.115,0.189-0.227,0.378-0.34,0.569c-0.063,0.146-0.179,0.475,0.044,0.509c0.055,0.009,0.11,0.011,0.163,0.009L8.12,16.324L8.12,16.324z"/><path style="&st23;" d="M17.019,15.036c-1.027,0.278-1.972,0.734-2.494,0.604c-0.438-0.109-0.084-0.76,0.042-0.965c0.069-0.146,0.167-0.292,0.249-0.406c0.31-0.506,0.833-1.351,0.833-1.351s0,0,0-0.002c0.017-0.032,0.033-0.067,0.049-0.102c0.067-0.18,0.12-0.537-0.472-0.597c-0.799-0.082-1.613,0.619-1.613,0.619s-0.547,0.301-0.838,1.417l0.112-0.313c0,0,0.291-0.973,1.105-1.281c0,0,0.317-0.171,0.831-0.177c0.513-0.005,0.392,0.354,0.392,0.354s-0.056,0.233-0.586,0.912c-0.529,0.677-0.671,1.195-0.671,1.195s-0.319,0.723,0.193,0.957c0,0,0.238,0.141,0.939-0.091c0.7-0.233,3.02-0.843,4.438-1.06l0.993-0.506C19.849,14.299,18.012,14.769,17.019,15.036L17.019,15.036z"/><path style="&st23;" d="M-16.122-14.641"/><path style="&st23;" d="M-16.122-14.641"/><path style="&st59;" d="M90.578,74.217c0.006-0.004,0.009-0.008,0.014-0.013C90.587,74.21,90.582,74.213,90.578,74.217z"/><path style="&st59;" d="M90.821,73.951c0.001-0.002,0.002-0.004,0.003-0.004C90.823,73.947,90.822,73.949,90.821,73.951z"/><path style="&st59;" d="M90.738,74.042c0.003-0.004,0.008-0.009,0.011-0.013C90.746,74.033,90.741,74.038,90.738,74.042z"/><path style="&st8;" d="M87.9,76.68l-0.164,0.174c-0.646,0.716-0.969,1.007-0.969,1.007l-0.242,0.269l0,0c-0.002,0.006-0.006,0.012-0.012,0.014c0.008,0.002,0.018,0.004,0.041,0.004c0,0,0.229-0.002,0.588-0.219c-0.072,0.041-0.139,0.068-0.181,0.07c-0.177,0.012,0.431-0.538,0.431-0.538s0.588-0.626,0.967-1.125c0.382-0.497,0.138-0.468,0.138-0.468s-0.087-0.021-0.397,0.125C88.125,76.018,88.268,76.223,87.9,76.68L87.9,76.68z"/><path style="&st59;" d="M90.657,74.133c0.003-0.006,0.007-0.013,0.013-0.017C90.664,74.121,90.662,74.128,90.657,74.133z"/><path style="&st0;" d="M72.945,81.21c0,0,2.215-0.931,3.402-0.79c0,0,0.611,0.059-0.062,0.711c-0.672,0.652-0.892,1.168,0.396,0.752c0,0,0.094-0.033,0.244-0.086c-0.504,0.143-0.734,0.143-0.658,0.033c0.127-0.188,0.461-0.461,0.461-0.461s0.399-0.4,0.399-0.801c0,0,0.128-0.588-1.604-0.225c-1.01,0.209-1.969,0.59-2.588,0.867C72.941,81.211,72.943,81.211,72.945,81.21L72.945,81.21z"/><path style="&st59;" d="M72.234,81.555l-0.004,0.002C72.232,81.557,72.234,81.555,72.234,81.555z"/><path style="&st59;" d="M88.057,76.014c-0.014,0.008-0.026,0.015-0.043,0.021C88.028,76.027,88.043,76.021,88.057,76.014z"/><path style="&st14;" d="M78.305,81.299c1.448-0.521,3.93-1.854,5.023-2.492C82.232,79.442,79.73,80.717,78.305,81.299z"/><path style="&st59;" d="M87.512,76.325c0.026-0.017,0.055-0.032,0.08-0.049C87.566,76.293,87.538,76.309,87.512,76.325z"/><path style="&st59;" d="M91.618,73.084c0.008-0.011,0.019-0.023,0.026-0.029C91.637,73.061,91.626,73.073,91.618,73.084z"/><path style="&st59;" d="M91.434,73.281c0.01-0.012,0.019-0.02,0.023-0.027C91.451,73.264,91.441,73.27,91.434,73.281z"/><path style="&st59;" d="M91.521,73.188c0.01-0.012,0.02-0.022,0.029-0.032C91.539,73.165,91.53,73.178,91.521,73.188z"/><path style="&st59;" d="M90.9,73.863c0.003-0.006,0.007-0.01,0.012-0.016C90.907,73.854,90.903,73.857,90.9,73.863z"/><path style="&st59;" d="M71.246,82.088c-0.014,0.008-0.023,0.018-0.036,0.022C71.221,82.105,71.232,82.096,71.246,82.088z"/><path style="&st59;" d="M91.346,73.375c0.008-0.008,0.014-0.015,0.021-0.021C91.359,73.36,91.354,73.367,91.346,73.375z"/><path style="&st59;" d="M91.077,73.669c0.006-0.006,0.01-0.011,0.013-0.015C91.087,73.659,91.083,73.663,91.077,73.669z"/><path style="&st59;" d="M91.251,73.479c0.007-0.006,0.015-0.012,0.021-0.021C91.266,73.463,91.255,73.473,91.251,73.479z"/><path style="&st59;" d="M90.987,73.768c0.004-0.006,0.01-0.012,0.016-0.021C90.997,73.756,90.991,73.762,90.987,73.768z"/><path style="&st59;" d="M91.161,73.578c0.006-0.006,0.011-0.014,0.017-0.02C91.172,73.564,91.165,73.572,91.161,73.578z"/><path style="&st59;" d="M71.816,81.764c-0.008,0.006-0.02,0.012-0.026,0.017C71.799,81.774,71.809,81.77,71.816,81.764z"/><path style="&st59;" d="M72.044,81.646c-0.006,0.004-0.012,0.006-0.019,0.009C72.032,81.652,72.038,81.649,72.044,81.646z"/><path style="&st59;" d="M71.305,82.055c-0.011,0.008-0.021,0.014-0.031,0.021C71.283,82.067,71.294,82.063,71.305,82.055z"/><path style="&st59;" d="M71.969,81.684c-0.008,0.004-0.015,0.009-0.021,0.014C71.953,81.692,71.961,81.688,71.969,81.684z"/><path style="&st59;" d="M72.109,81.613c-0.004,0.005-0.01,0.006-0.016,0.01C72.102,81.619,72.105,81.617,72.109,81.613z"/><path style="&st59;" d="M72.008,81.665c-0.007,0.004-0.013,0.007-0.021,0.011C71.994,81.672,72.001,81.669,72.008,81.665z"/><path style="&st59;" d="M72.206,81.566c-0.003,0.002-0.005,0.003-0.007,0.004C72.201,81.569,72.203,81.568,72.206,81.566z"/><path style="&st59;" d="M72.148,81.594c-0.008,0.004-0.016,0.01-0.024,0.015C72.135,81.604,72.141,81.598,72.148,81.594z"/><path style="&st59;" d="M71.928,81.707c-0.01,0.003-0.02,0.01-0.027,0.016C71.908,81.715,71.918,81.711,71.928,81.707z"/><path style="&st59;" d="M72.193,81.575c-0.006,0.001-0.01,0.003-0.014,0.004C72.184,81.578,72.189,81.575,72.193,81.575z"/><path style="&st59;" d="M72.172,81.585c-0.004,0.003-0.008,0.005-0.015,0.007C72.164,81.59,72.168,81.585,72.172,81.585z"/><path style="&st59;" d="M72.079,81.631c-0.008,0.002-0.013,0.004-0.019,0.006C72.066,81.635,72.071,81.633,72.079,81.631z"/><path style="&st59;" d="M71.866,81.739c-0.011,0.002-0.021,0.008-0.027,0.013C71.848,81.747,71.857,81.741,71.866,81.739z"/><path style="&st59;" d="M71.555,81.906c-0.018,0.012-0.033,0.02-0.052,0.029C71.521,81.924,71.539,81.918,71.555,81.906z"/><path style="&st59;" d="M72.219,81.561c0,0.002-0.002,0.002-0.002,0.004C72.217,81.563,72.219,81.563,72.219,81.561z"/><path style="&st59;" d="M71.421,81.986c-0.011,0.006-0.022,0.01-0.03,0.02C71.398,81.996,71.41,81.992,71.421,81.986z"/><path style="&st59;" d="M71.363,82.02c-0.012,0.005-0.021,0.013-0.032,0.021C71.342,82.032,71.354,82.024,71.363,82.02z"/><path style="&st59;" d="M71.482,81.948c-0.014,0.006-0.023,0.015-0.036,0.021C71.458,81.963,71.471,81.956,71.482,81.948z"/><path style="&st59;" d="M71.768,81.79c-0.01,0.004-0.018,0.009-0.024,0.017C71.751,81.799,71.758,81.794,71.768,81.79z"/><path style="&st59;" d="M91.708,72.984c0.013-0.014,0.024-0.028,0.04-0.042C91.734,72.956,91.723,72.971,91.708,72.984z"/><path style="&st59;" d="M71.717,81.818c-0.01,0.004-0.019,0.009-0.027,0.015C71.698,81.827,71.707,81.822,71.717,81.818z"/><path style="&st59;" d="M71.665,81.846c-0.011,0.006-0.021,0.014-0.028,0.018C71.645,81.858,71.654,81.852,71.665,81.846z"/><path style="&st59;" d="M71.609,81.875c-0.01,0.008-0.021,0.014-0.03,0.02C71.589,81.889,71.602,81.881,71.609,81.875z"/><path style="&st59;" d="M92.443,72.197c-0.021,0.021-0.037,0.039-0.055,0.061C92.406,72.238,92.423,72.217,92.443,72.197z"/><path style="&st59;" d="M92.359,72.287c-0.021,0.021-0.041,0.044-0.061,0.066C92.318,72.331,92.339,72.309,92.359,72.287z"/><path style="&st59;" d="M92.501,72.135c-0.011,0.015-0.021,0.023-0.028,0.033C92.48,72.157,92.49,72.148,92.501,72.135z"/><path style="&st59;" d="M91.786,72.899c0.022-0.021,0.042-0.042,0.062-0.063C91.828,72.857,91.807,72.878,91.786,72.899z"/><path style="&st59;" d="M92.273,72.379c-0.014,0.016-0.025,0.029-0.041,0.045C92.245,72.409,92.26,72.395,92.273,72.379z"/><path style="&st59;" d="M92.579,72.053c-0.013,0.012-0.021,0.021-0.03,0.032C92.559,72.074,92.569,72.063,92.579,72.053z"/><path style="&st59;" d="M92.762,71.858c-0.002,0-0.002,0-0.002,0.001C92.76,71.858,92.76,71.858,92.762,71.858z"/><path style="&st59;" d="M92.703,71.919c-0.004,0.005-0.01,0.013-0.014,0.017C92.693,71.928,92.699,71.924,92.703,71.919z"/><path style="&st59;" d="M87.938,76.074c-0.017,0.008-0.027,0.016-0.043,0.023C87.907,76.09,87.922,76.082,87.938,76.074z"/><path style="&st59;" d="M92.648,71.98c-0.012,0.011-0.021,0.021-0.029,0.029C92.629,72,92.637,71.991,92.648,71.98z"/><path style="&st59;" d="M87.666,76.229c-0.018,0.013-0.031,0.021-0.051,0.031C87.633,76.25,87.648,76.241,87.666,76.229z"/><path style="&st59;" d="M48.204,91.026c0,0-0.001,0-0.003,0.002C48.203,91.026,48.203,91.026,48.204,91.026z"/><path style="&st59;" d="M48.073,91.03c-0.007,0-0.013,0-0.021,0C48.06,91.03,48.066,91.03,48.073,91.03z"/><path style="&st59;" d="M48.136,91.028c-0.007,0.002-0.013,0.002-0.02,0.002C48.123,91.03,48.129,91.03,48.136,91.028z"/><path style="&st59;" d="M48.005,91.032c-0.003,0-0.007,0-0.012,0C47.998,91.032,48.002,91.032,48.005,91.032z"/><path style="&st59;" d="M47.94,91.035c-0.004,0-0.009,0-0.015,0C47.93,91.035,47.935,91.035,47.94,91.035z"/><path style="&st59;" d="M87.869,76.111c-0.014,0.006-0.021,0.015-0.039,0.021C87.848,76.126,87.857,76.117,87.869,76.111z"/><path style="&st59;" d="M87.807,76.146c-0.014,0.009-0.025,0.018-0.041,0.021C87.779,76.164,87.793,76.155,87.807,76.146z"/><path style="&st59;" d="M87.738,76.186c-0.016,0.011-0.028,0.018-0.044,0.024C87.71,76.203,87.723,76.196,87.738,76.186z"/><path style="&st59;" d="M87.951,76.067c0.02-0.011,0.035-0.021,0.054-0.027C87.986,76.047,87.971,76.057,87.951,76.067z"/><path style="&st59;" d="M87.719,77.52c0,0-0.082,0.064-0.193,0.147C87.592,77.621,87.664,77.566,87.719,77.52z"/><path style="&st59;" d="M92.205,72.452c-0.021,0.022-0.042,0.046-0.064,0.067C92.163,72.498,92.186,72.475,92.205,72.452z"/><path style="&st59;" d="M28.05,87.006c-0.019-0.007-0.037-0.016-0.056-0.021C28.013,86.991,28.031,86.999,28.05,87.006z"/><path style="&st59;" d="M71.051,82.217c-0.013,0.008-0.021,0.017-0.037,0.021C71.027,82.23,71.038,82.223,71.051,82.217z"/><path style="&st59;" d="M45.854,89.871c-0.024,0-0.049-0.004-0.074-0.004C45.806,89.867,45.831,89.871,45.854,89.871z"/><path style="&st59;" d="M27.678,86.883c0.02,0.004,0.039,0.01,0.058,0.019C27.717,86.893,27.696,86.887,27.678,86.883z"/><path style="&st59;" d="M27.555,86.844c0.038,0.012,0.078,0.022,0.119,0.037C27.633,86.869,27.593,86.854,27.555,86.844z"/><path style="&st59;" d="M27.862,86.941c-0.041-0.014-0.082-0.026-0.123-0.04C27.78,86.913,27.82,86.928,27.862,86.941z"/><path style="&st59;" d="M91.88,72.799c0.015-0.016,0.026-0.027,0.04-0.043C91.907,72.771,91.895,72.784,91.88,72.799z"/><path style="&st59;" d="M28.058,87.006c0.04,0.016,0.079,0.026,0.116,0.041C28.137,87.033,28.098,87.021,28.058,87.006z"/><path style="&st59;" d="M91.977,72.695c0.014-0.016,0.026-0.027,0.041-0.044C92.002,72.668,91.989,72.68,91.977,72.695z"/><path style="&st59;" d="M92.057,72.612c0.021-0.022,0.039-0.041,0.061-0.062C92.096,72.571,92.076,72.59,92.057,72.612z"/><path style="&st59;" d="M27.991,86.985c-0.021-0.009-0.041-0.017-0.062-0.022C27.95,86.969,27.97,86.977,27.991,86.985z"/><path style="&st59;" d="M71.133,82.162c0.021-0.013,0.037-0.021,0.055-0.036C71.17,82.139,71.152,82.149,71.133,82.162z"/><path style="&st59;" d="M46.361,89.926c-0.016-0.002-0.035-0.004-0.053-0.008C46.325,89.922,46.345,89.924,46.361,89.926z"/><path style="&st59;" d="M71.122,82.17c-0.019,0.012-0.034,0.021-0.049,0.032C71.088,82.191,71.105,82.18,71.122,82.17z"/><path style="&st59;" d="M46.439,89.939c-0.017-0.002-0.032-0.006-0.049-0.008C46.407,89.934,46.422,89.938,46.439,89.939z"/><path style="&st59;" d="M46.513,89.953c-0.016-0.005-0.031-0.007-0.047-0.011C46.481,89.946,46.497,89.948,46.513,89.953z"/><path style="&st59;" d="M46.096,89.891c-0.031-0.002-0.065-0.006-0.1-0.01C46.031,89.885,46.065,89.889,46.096,89.891z"/><path style="&st59;" d="M46.278,89.913c-0.02-0.002-0.041-0.004-0.061-0.006C46.237,89.909,46.259,89.911,46.278,89.913z"/><path style="&st59;" d="M46.19,89.904c-0.028-0.005-0.054-0.008-0.084-0.012C46.136,89.896,46.163,89.899,46.19,89.904z"/><path style="&st59;" d="M45.971,89.881c-0.025-0.005-0.051-0.006-0.079-0.009C45.92,89.875,45.945,89.877,45.971,89.881z"/><path style="&st59;" d="M27.926,86.961c-0.02-0.004-0.039-0.011-0.058-0.019C27.888,86.953,27.908,86.957,27.926,86.961z"/><path style="&st59;" d="M47.395,90.975c0.001,0.004,0.003,0.004,0.004,0.004C47.398,90.979,47.396,90.979,47.395,90.975z"/><path style="&st59;" d="M47.375,90.969c0.001,0,0.002,0,0.003,0C47.378,90.969,47.376,90.969,47.375,90.969z"/><path style="&st59;" d="M47.418,90.982L47.418,90.982L47.418,90.982z"/><path style="&st59;" d="M47.465,90.996c0.003,0,0.004,0.001,0.006,0.001C47.47,90.997,47.468,90.996,47.465,90.996z"/><path style="&st59;" d="M47.442,90.988c0.001,0,0.002,0.002,0.002,0.002L47.442,90.988z"/><path style="&st59;" d="M47.342,90.955L47.342,90.955L47.342,90.955z"/><path style="&st59;" d="M46.589,89.967c-0.02-0.002-0.036-0.009-0.054-0.013C46.553,89.959,46.57,89.965,46.589,89.967z"/><path style="&st59;" d="M46.764,90.012c-0.011-0.004-0.021-0.008-0.033-0.012C46.742,90.006,46.753,90.008,46.764,90.012z"/><path style="&st59;" d="M49.049,90.953c-0.01,0.001-0.021,0.002-0.032,0.004C49.028,90.955,49.038,90.954,49.049,90.953z"/><path style="&st59;" d="M46.659,89.984c-0.021-0.006-0.039-0.01-0.061-0.014C46.619,89.975,46.639,89.979,46.659,89.984z"/><path style="&st59;" d="M47.767,91.028c0.003,0,0.003,0,0.006,0C47.773,91.028,47.77,91.028,47.767,91.028z"/><path style="&st59;" d="M47.821,91.03c0.003,0,0.007,0,0.013,0C47.828,91.03,47.824,91.03,47.821,91.03z"/><path style="&st59;" d="M45.214,89.855c0.047,0,0.092,0,0.139,0C45.308,89.855,45.261,89.855,45.214,89.855z"/><path style="&st59;" d="M47.716,91.026c0.005,0,0.009,0,0.013,0.002C47.727,91.026,47.722,91.026,47.716,91.026z"/><path style="&st32;" d="M46.772,90.014c0,0,0.158,0.021,0.059,0.338c-0.1,0.313,0.06,0.451,0.475,0.594l0.023,0.006c0,0,0.001,0,0.002,0c-0.079-0.04-0.074-0.08-0.074-0.08s-0.01-0.078,0.078-0.216c0.087-0.136,0.009-0.369-0.293-0.536C47.044,90.118,46.967,90.07,46.772,90.014L46.772,90.014L46.772,90.014z"/><path style="&st59;" d="M47.869,91.032c0.006,0,0.012,0,0.018,0C47.881,91.032,47.875,91.032,47.869,91.032z"/><path style="&st59;" d="M47.495,91.002c0.001,0,0.004,0,0.004,0C47.497,91.002,47.496,91.002,47.495,91.002z"/><path style="&st59;" d="M47.677,91.024c0.004,0,0.007,0,0.01,0C47.684,91.024,47.681,91.024,47.677,91.024z"/><path style="&st59;" d="M47.529,91.006c0.001,0,0.002,0,0.002,0S47.53,91.006,47.529,91.006z"/><path style="&st59;" d="M47.559,91.01c0.002,0.002,0.005,0.002,0.008,0.002C47.566,91.012,47.561,91.01,47.559,91.01z"/><path style="&st59;" d="M47.594,91.016c0.002,0,0.004,0,0.008,0C47.599,91.016,47.596,91.016,47.594,91.016z"/><path style="&st59;" d="M46.711,89.997c-0.011-0.002-0.026-0.007-0.043-0.011C46.685,89.99,46.701,89.995,46.711,89.997z"/><path style="&st59;" d="M28.748,87.256c-0.008-0.003-0.018-0.007-0.025-0.01C28.731,87.25,28.739,87.254,28.748,87.256z"/><path style="&st59;" d="M28.776,87.27c-0.007-0.002-0.016-0.008-0.024-0.012C28.761,87.262,28.769,87.268,28.776,87.27z"/><path style="&st59;" d="M28.681,87.23c-0.008-0.004-0.021-0.006-0.03-0.01C28.66,87.225,28.672,87.227,28.681,87.23z"/><path style="&st59;" d="M45.66,89.862c0.026,0,0.052,0.005,0.074,0.005C45.711,89.865,45.686,89.865,45.66,89.862z"/><path style="&st59;" d="M28.797,87.275c-0.005-0.002-0.013-0.006-0.021-0.008C28.784,87.271,28.792,87.273,28.797,87.275z"/><path style="&st59;" d="M27.38,86.794c0.038,0.011,0.074,0.022,0.112,0.031C27.453,86.816,27.417,86.803,27.38,86.794z"/><path style="&st59;" d="M27.492,86.825c0.021,0.004,0.039,0.011,0.058,0.019C27.53,86.836,27.512,86.829,27.492,86.825z"/><path style="&st59;" d="M28.814,87.284c-0.003-0.002-0.006-0.005-0.012-0.007C28.808,87.279,28.811,87.282,28.814,87.284z"/><path style="&st59;" d="M28.64,87.219c-0.011-0.006-0.021-0.01-0.03-0.014C28.621,87.21,28.629,87.213,28.64,87.219z"/><path style="&st61;" d="M27.687,87.239c-0.014-0.013-0.023-0.022-0.03-0.032c-0.263-0.197-0.343-0.418-0.343-0.418l0.009-0.011c0.017,0.007,0.034,0.011,0.052,0.014c-0.291-0.075-0.5-0.104-0.479-0.018c0.015,0.061,0.131,0.153,0.269,0.245c0.174,0.094,0.346,0.187,0.522,0.279V87.239L27.687,87.239z"/><path style="&st59;" d="M28.716,87.245c-0.009-0.003-0.018-0.006-0.027-0.01C28.699,87.239,28.708,87.242,28.716,87.245z"/><path style="&st59;" d="M28.602,87.202c-0.013-0.004-0.027-0.01-0.042-0.015C28.574,87.192,28.59,87.198,28.602,87.202z"/><path style="&st59;" d="M28.841,87.293c0,0-0.006-0.004-0.022-0.009C28.835,87.29,28.841,87.293,28.841,87.293z"/><path style="&st59;" d="M28.232,87.068c-0.018-0.006-0.031-0.014-0.047-0.018C28.201,87.055,28.215,87.063,28.232,87.068z"/><path style="&st59;" d="M45.534,89.858c0.028,0,0.054,0.002,0.081,0.002C45.587,89.858,45.562,89.858,45.534,89.858z"/><path style="&st59;" d="M45.397,89.855c0.029,0,0.06,0,0.089,0C45.457,89.855,45.427,89.855,45.397,89.855z"/><path style="&st59;" d="M28.348,87.11c-0.034-0.013-0.07-0.025-0.106-0.039C28.278,87.085,28.314,87.098,28.348,87.11z"/><path style="&st59;" d="M28.506,87.168c-0.013-0.005-0.025-0.01-0.037-0.015C28.481,87.158,28.494,87.162,28.506,87.168z"/><path style="&st59;" d="M28.401,87.129c-0.013-0.006-0.028-0.011-0.043-0.015C28.373,87.118,28.388,87.123,28.401,87.129z"/><path style="&st59;" d="M28.557,87.186c-0.013-0.004-0.025-0.012-0.04-0.017C28.531,87.176,28.544,87.182,28.557,87.186z"/><path style="&st59;" d="M28.458,87.15c-0.016-0.008-0.031-0.014-0.047-0.018C28.427,87.137,28.442,87.143,28.458,87.15z"/><path style="&st59;" d="M70.02,84.389c0.004,0,0.006,0,0.006,0C70.023,84.389,70.023,84.389,70.02,84.389z"/><path style="&st59;" d="M70.789,84.087c-0.001,0.003-0.003,0.005-0.004,0.005C70.786,84.09,70.788,84.088,70.789,84.087z"/><path style="&st59;" d="M70.762,84.102c-0.002,0.002-0.004,0.002-0.006,0.004C70.758,84.104,70.76,84.104,70.762,84.102z"/><path style="&st59;" d="M70.732,84.116c-0.002,0.002-0.004,0.003-0.006,0.004C70.729,84.119,70.73,84.118,70.732,84.116z"/><path style="&st59;" d="M70.697,84.133c-0.001,0-0.002,0-0.002,0.002C70.695,84.133,70.696,84.133,70.697,84.133z"/><path style="&st59;" d="M70.417,84.249c0.006-0.001,0.009-0.002,0.011-0.002C70.426,84.247,70.423,84.248,70.417,84.249z"/><path style="&st59;" d="M70.389,84.262h0.002H70.389z"/><path style="&st59;" d="M70.662,84.146L70.662,84.146L70.662,84.146z"/><path style="&st59;" d="M70.316,84.289c0.002-0.002,0.007-0.003,0.009-0.003C70.321,84.286,70.318,84.287,70.316,84.289z"/><path style="&st59;" d="M70.285,84.299c0.003,0,0.005-0.002,0.009-0.004C70.29,84.297,70.288,84.299,70.285,84.299z"/><path style="&st59;" d="M70.354,84.275c0.002-0.002,0.002-0.002,0.002-0.002S70.354,84.273,70.354,84.275z"/><path style="&st59;" d="M48.946,90.965c-0.011,0-0.022,0.004-0.033,0.004C48.924,90.969,48.935,90.965,48.946,90.965z"/><path style="&st59;" d="M70.256,84.311c0.002,0,0.004,0,0.006-0.002C70.26,84.311,70.258,84.311,70.256,84.311z"/><path style="&st59;" d="M70.78,82.41c0.013-0.009,0.026-0.021,0.042-0.032C70.809,82.389,70.793,82.401,70.78,82.41z"/><path style="&st59;" d="M70.956,82.279c0.013-0.008,0.022-0.016,0.033-0.023C70.98,82.264,70.969,82.271,70.956,82.279z"/><path style="&st59;" d="M70.898,82.321c0.012-0.009,0.022-0.017,0.033-0.022C70.923,82.305,70.91,82.313,70.898,82.321z"/><path style="&st2;" d="M70.903,83.794c0.2,0.064,0.106,0.171-0.087,0.278l0.089-0.033c0,0,0.793-0.436,0.458-0.633c-0.338-0.198-1.129-0.275-0.613-0.969l0.02-0.02c-0.442,0.344-0.756,0.727-0.498,1.021C70.27,83.443,70.387,83.629,70.903,83.794z"/><path style="&st59;" d="M70.566,84.191c-0.002,0-0.006,0.002-0.008,0.003C70.561,84.193,70.564,84.191,70.566,84.191z"/><path style="&st59;" d="M70.631,84.163c-0.002,0.001-0.004,0.002-0.006,0.003C70.627,84.165,70.629,84.164,70.631,84.163z"/><path style="&st59;" d="M70.598,84.176c0,0.002-0.004,0.004-0.006,0.004C70.594,84.18,70.598,84.178,70.598,84.176z"/><path style="&st59;" d="M70.493,84.223c-0.003,0-0.003,0-0.007,0.002C70.49,84.223,70.49,84.223,70.493,84.223z"/><path style="&st59;" d="M70.459,84.233c-0.002,0-0.004,0.002-0.008,0.004C70.455,84.235,70.457,84.233,70.459,84.233z"/><path style="&st59;" d="M70.842,82.363c0.012-0.01,0.024-0.018,0.034-0.025C70.866,82.346,70.854,82.354,70.842,82.363z"/><path style="&st59;" d="M48.293,91.024c-0.007,0-0.016,0-0.023,0C48.277,91.024,48.286,91.024,48.293,91.024z"/><path style="&st59;" d="M48.444,91.014c-0.004,0-0.011,0-0.017,0C48.434,91.014,48.44,91.014,48.444,91.014z"/><path style="&st59;" d="M48.369,91.02c-0.009,0-0.017,0-0.027,0C48.352,91.02,48.359,91.02,48.369,91.02z"/><path style="&st8;" d="M50.023,89.904c0,0,0.362,0.225,1.673,0.285c0,0,0.45,0,0.468,0.035c0.016,0.028,0.036,0.056-0.068,0.102l0,0c0.06-0.021,0.793-0.254,0.476-0.391c-0.04-0.019-0.063-0.024-0.074-0.028c-0.006,0-0.013,0-0.019-0.003l0,0c-0.008-0.002-0.016-0.002-0.021-0.004c-0.007,0-0.009-0.001-0.013-0.001c-0.006-0.003-0.014-0.003-0.021-0.005c-0.004,0-0.009,0-0.015-0.002c-0.005,0-0.011-0.002-0.017-0.002c-0.004,0-0.011-0.002-0.017-0.004c-0.005,0-0.012,0-0.015,0c-0.008-0.002-0.014-0.002-0.018-0.004c-0.004,0-0.012,0-0.016-0.002c-0.005,0-0.012,0-0.018,0c-0.002-0.004-0.008-0.004-0.01-0.004c-0.011-0.002-0.015-0.003-0.021-0.003c-0.004,0-0.006-0.001-0.008-0.001c-0.01-0.001-0.021-0.001-0.028-0.002c0,0-0.002,0-0.004-0.002c-0.007,0-0.015,0-0.021,0c-0.005-0.002-0.007-0.002-0.012-0.002s-0.011,0-0.02,0c-0.004,0-0.006,0-0.008,0c-0.008-0.002-0.013-0.002-0.019-0.002c-0.003,0-0.007,0-0.009,0c-0.008,0-0.014-0.002-0.018-0.002c-0.005,0-0.009-0.003-0.012-0.003c-0.006,0-0.014,0-0.021,0c-0.004,0-0.004,0-0.006,0c-0.039-0.004-0.08-0.004-0.128-0.009c-0.002,0-0.004,0-0.004,0c-0.009,0-0.015-0.002-0.022-0.002c-0.002,0-0.007,0-0.011,0c-0.007,0-0.013,0-0.021,0c-0.004-0.002-0.01-0.002-0.014-0.002c-0.006,0-0.013-0.002-0.02-0.002c-0.005,0-0.011,0-0.016-0.002c-0.005,0-0.011,0-0.019,0c-0.01,0-0.02-0.002-0.028-0.004c-0.006,0-0.012,0-0.019,0c-0.008,0-0.018-0.002-0.028-0.002c-0.005,0-0.011-0.002-0.016-0.002c-0.008,0-0.019,0-0.024-0.001c-0.006-0.001-0.013-0.001-0.021-0.001c-0.007-0.002-0.018-0.002-0.026-0.004c-0.005,0-0.013-0.001-0.02-0.001c-0.008-0.001-0.018-0.003-0.026-0.003c-0.007-0.001-0.016-0.001-0.023-0.003c-0.01,0-0.019-0.002-0.027-0.002c-0.007-0.002-0.014-0.002-0.021-0.002c-0.012,0-0.024-0.003-0.035-0.005c-0.007,0-0.014,0-0.02,0c-0.02-0.004-0.037-0.006-0.057-0.006c-0.142-0.019-0.271-0.033-0.378-0.055l-0.187-0.025c0,0-0.47-0.014-0.653-0.316c-0.118-0.197,0.457-0.318,0.457-0.318s0.956-0.193,1.917-0.321c0,0-2.542,0.294-2.777,0.626C49.613,89.737,50.023,89.904,50.023,89.904L50.023,89.904z"/><path style="&st59;" d="M69.986,84.401L69.986,84.401L69.986,84.401z"/><path style="&st59;" d="M69.989,84.399c0.001,0,0.001,0,0.004,0C69.991,84.399,69.99,84.399,69.989,84.399z"/><path style="&st59;" d="M48.839,90.979c-0.007,0-0.015,0.002-0.021,0.002C48.824,90.98,48.831,90.979,48.839,90.979z"/><path style="&st59;" d="M48.727,90.988c-0.009,0-0.017,0.002-0.026,0.002C48.71,90.99,48.718,90.988,48.727,90.988z"/><path style="&st59;" d="M48.637,90.998c-0.009,0-0.019,0.001-0.029,0.003C48.619,90.999,48.628,90.998,48.637,90.998z"/><path style="&st59;" d="M48.55,91.004c-0.009,0-0.018,0.002-0.025,0.004C48.532,91.006,48.54,91.004,48.55,91.004z"/><path style="&st59;" d="M70.139,84.35c0.004,0,0.006-0.002,0.01-0.004C70.145,84.348,70.143,84.35,70.139,84.35z"/><path style="&st59;" d="M70.116,84.359c0.002-0.002,0.004-0.002,0.007-0.002C70.12,84.357,70.118,84.357,70.116,84.359z"/><path style="&st59;" d="M70.193,84.332c0.002,0,0.002-0.002,0.004-0.002C70.195,84.33,70.195,84.332,70.193,84.332z"/><path style="&st59;" d="M70.068,84.374c0.003,0,0.004,0,0.007-0.002C70.072,84.374,70.07,84.374,70.068,84.374z"/><path style="&st59;" d="M70.163,84.342c0.005,0,0.007-0.002,0.011-0.005C70.17,84.34,70.167,84.342,70.163,84.342z"/><path style="&st59;" d="M69.996,84.395c0.002,0,0.002,0,0.004,0C69.998,84.395,69.998,84.395,69.996,84.395z"/><path style="&st59;" d="M70.004,84.395c0.002,0,0.006-0.002,0.008-0.002C70.006,84.395,70.006,84.395,70.004,84.395z"/><path style="&st59;" d="M72.23,81.559c-0.002,0-0.004,0-0.004,0S72.229,81.559,72.23,81.559z"/><path style="&st59;" d="M70.053,84.379c0.002,0,0.002,0,0.004,0C70.053,84.379,70.053,84.379,70.053,84.379z"/><path style="&st59;" d="M70.036,84.385c0.001,0,0.003,0,0.004-0.002C70.039,84.385,70.037,84.385,70.036,84.385z"/><linearGradient id="SVGID_31_" gradientUnits="userSpaceOnUse" x1="414.2451" y1="568.2656" x2="509.0055" y2="545.7273" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st51;" d="M7.61,68.141c-0.065-0.062-0.112-0.105-0.139-0.131L7.45,68.021L7.61,68.141L7.61,68.141z"/><linearGradient id="SVGID_32_" gradientUnits="userSpaceOnUse" x1="416.6992" y1="578.5645" x2="511.8228" y2="555.9398" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st62;" d="M90.412,59.954l0.689,0.108c1.976-1.573,3.869-3.571,3.869-3.571s1.258-1.261,1.889-2.356c0.22-0.381,0.281-0.356,0.271-0.177c0.023-0.09,0.103-0.456-0.038-0.714c-0.094-0.176-0.381,0.288-0.83,0.861c0,0-2.013,2.926-5.798,5.816c-3.786,2.891-4.776,3.771-8.083,5.655c0,0-2.309,1.021-3.914,0.669c-1.246-0.271,0-1.547,0.271-2.699c0.271-1.146,0.063-1.58-0.225-1.807c-0.287-0.225-0.91-0.385-2.142-0.109c0,0-4.709,1.264-6.819,3.307c-1.918,1.854,0.478,2.619,1.021,2.875c0,0,0.78,0.338,0.719,0.672c-0.063,0.336-0.496,0.623-0.733,0.783c-0.239,0.16-3.338,1.977-8.324,2.764c-4.039,0.641-3.26,0.255-7.143,0.654c-3.881,0.399-4.952,0.72-8.068,1.453c-3.116,0.734-4.945,1.537-5.352,2.349c-0.336,0.671,0.479,1.103,0.991,1.407c0.511,0.304,1.423,0.781,1.119,1.293c-0.305,0.512-1.631,1.277-4.874,1.391c-3.243,0.114-4.569-0.336-5.16-1.04c-0.548-0.649-0.08-1.323,0.096-1.946c0,0,0.382-0.814,0.16-1.215c-0.224-0.398-0.737-0.494-1.278-0.559c-0.544-0.064-3.245-0.158-5.337-0.271c-2.372-0.127-5.208-0.211-8.611-0.928c0,0-2.237-0.441-3.69-1.262c-0.096-0.055-0.18-0.107-0.25-0.156c-0.11-0.059-0.194-0.122-0.25-0.209c-0.41-0.432-0.047-0.748-0.186-1.168c-0.121-0.359-0.352-0.878-0.896-1.501c-0.176-0.183-0.428-0.437-0.72-0.713c-0.08-0.069-0.165-0.144-0.254-0.214c-1.276-1.037-1.422-1.149-1.964-1.166c-0.542-0.019-0.235,0.895-0.129,1.246c0.041,0.136,0.139,0.328,0.242,0.508c-0.2-0.364-0.336-0.729-0.257-0.915c0.144-0.337,0.309-0.308,0.309-0.308s0.133-0.053,0.595,0.297c0.463,0.35,1.499,1.078,2.012,1.705c0.512,0.625,0.481,1.18,0.481,1.18s-0.103,0.563,0.451,1.17c0.555,0.604,1.733,1.714,5.859,2.349c0.021,0.005,0.041,0.005,0.06,0.009l0.193-0.549l0.568,0.663c0.006,0,0.01,0.001,0.016,0.002c3.592,0.519,5.544,0.563,5.544,0.563s4.709,0.164,5.982,0.164c1.271,0,1.035,0.664,1.035,0.664s-0.072,0.361-0.225,0.647c-0.153,0.288-0.524,1.365-0.144,1.94c0,0,0.585,1.426,4.382,1.527c0,0,3.324,0.267,5.643-0.688c2.317-0.954,0.224-2.277,0.224-2.277s-0.794-0.483-1.129-0.737c-0.308-0.233-0.184-0.48-0.122-0.646c0.061-0.163,0.297-0.355,0.564-0.492c0.265-0.134,1.241-0.652,5.365-1.722c4.124-1.067,6.587-1.183,6.587-1.183s0.021-0.004,0.062-0.006l0.334-0.656l0.845,0.559c0.732-0.061,1.686-0.129,2.537-0.17c1.691-0.083,4.341-0.475,5.879-0.811c1.539-0.342,3.869-1.059,5.591-1.951c1.724-0.891,1.808-1.519,1.808-1.519s0.328-0.472-0.391-0.995c-0.719-0.521-1.037-0.38-1.672-1.024c-0.638-0.646,0.553-1.619,0.553-1.619s0.615-0.865,4.021-2.177c3.408-1.313,3.98-0.873,4.156-0.728c0.175,0.142,0.195,0.613,0.123,0.933c-0.072,0.316-0.494,1.455-0.721,2.055c-0.227,0.592-0.316,1.402,0.604,1.6c0.924,0.193,2.215-0.009,3.427-0.443c2.893-1.033,3.757-2.295,8.535-5.764c0.011-0.01,0.021-0.016,0.029-0.023L90.412,59.954L90.412,59.954z"/><linearGradient id="SVGID_33_" gradientUnits="userSpaceOnUse" x1="415.4736" y1="573.4199" x2="510.5869" y2="550.7977" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st52;" d="M100.895,47.596c-0.635,1.186-1.164,2.608-1.443,3.5c-0.045,0.213-0.061,0.33-0.061,0.33s-0.119,0.654-0.054,1.036c0.028,0.161,0.069,0.279,0.106,0.375c0.021,0.052,0.039,0.095,0.055,0.134c0.02,0.045,0.031,0.082,0.033,0.111c0.007,0.082-0.044,0.614-0.27,1.23l0,0c0,0,0,0,0,0.002c-0.063,0.176-0.143,0.359-0.24,0.539c-0.024,0.05-0.053,0.095-0.074,0.139c-0.458,0.814-1.098,1.457-1.604,1.532c-0.324,0.049-0.484-0.117-0.557-0.386c0.014,0.369,0.086,0.738,0.289,0.963c0.406,0.441,1.563-0.795,1.563-0.795s0.688-0.789,0.965-2.062c0.406-1.875,0.187-2.248,0.187-2.248s-0.247-0.389-0.093-0.853c0.152-0.461,1.156-3.047,1.979-4.01l0.502-0.562c0-0.009,0.002-0.02,0.002-0.029l-0.211-0.521c-0.129,0.13-0.259,0.284-0.385,0.454C101.405,46.763,101.178,47.129,100.895,47.596L100.895,47.596z"/><linearGradient id="SVGID_34_" gradientUnits="userSpaceOnUse" x1="414.7754" y1="570.4785" x2="509.8697" y2="547.861" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st53;" d="M10.564,70.807L10.564,70.807c-0.146-0.092-0.315-0.229-0.469-0.356c-0.133-0.112-0.641-0.585-1.18-1.086c-0.212-0.194-0.411-0.382-0.589-0.55c-0.277-0.262-0.524-0.493-0.688-0.646l0.107,0.358c0.017,0.028,0.034,0.06,0.052,0.089c0.183,0.29,0.854,1.264,2.153,2.277c1.549,1.213,1.559,0.729,1.559,0.729s0.062-0.4-0.296-0.84c-0.063-0.076-0.131-0.167-0.202-0.27v0.002C11.011,70.516,12.023,71.998,10.564,70.807z"/><linearGradient id="SVGID_35_" gradientUnits="userSpaceOnUse" x1="414.915" y1="571.0664" x2="510.04" y2="548.4415" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st54;" d="M10.678,69.98c0.103,0.186,0.219,0.371,0.333,0.533C11,70.501,10.833,70.253,10.678,69.98z"/><linearGradient id="SVGID_36_" gradientUnits="userSpaceOnUse" x1="416.1035" y1="576.0654" x2="511.2286" y2="553.4405" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#EDEDEE"/><stop offset=".4176" stop-color="#FFF"/><stop offset=".6264" stop-color="#F8F9F9"/><stop offset=".9505" stop-color="#B2B4B6"/></linearGradient><path style="&st55;" d="M96.887,55.023c0,0,0.227-0.76,0.243-1.066c-0.003,0.014-0.005,0.021-0.005,0.021s-0.513,1.443-0.333,2.16C96.771,55.579,96.887,55.023,96.887,55.023z"/><path style="&st34;" d="M63.301,4.417l0.728,0.072c1.426-0.402,2.643-0.772,2.643-0.772s1.265-0.41,1.901-0.637c0.635-0.226,1.09-0.313,1.654-0.409c0.565-0.096,1.311-0.14,1.709-0.131c0.4,0.007,0.531,0.122,0.531,0.122s0.166,0.131,0.244,0.27c0.077,0.138,0.74,1.891,2.973,2.005c2.233,0.112,2.263-1.096,2.065-1.464c-0.226-0.427-0.896-0.863-0.896-0.863s-0.899-0.575-1.092-0.847c-0.191-0.27,0.034-0.357,0.104-0.375c0.065-0.017,2.435-0.497,2.729-0.609l0.021-0.021l-0.562-0.171c0,0-0.119,0.134-0.789,0.313c-0.67,0.179-1.235,0.246-1.742,0.313c-0.506,0.066-0.506,0.239-0.506,0.239l-0.086,0.136c-0.025,0.075-0.067,0.321,0.375,0.642c0.528,0.387,1.172,0.75,1.438,1.04s0.586,0.783,0.012,1.137C76.48,4.576,76.27,4.64,75.977,4.671c0.002,0.008,0,0.012,0,0.012c-0.248,0.021-0.457,0.03-0.638,0.03c-0.049,0.002-0.102,0.006-0.155,0.009l-0.017-0.013c-0.506-0.024-0.746-0.142-1.067-0.302c-0.442-0.223-0.758-0.73-0.92-1.087s-0.521-0.662-0.521-0.662c-0.588-0.336-1.695-0.343-2.813-0.15c-1.115,0.193-2.656,0.707-2.925,0.812c-0.268,0.104-1.616,0.551-2.307,0.73c-0.693,0.178-1.222,0.357-1.646,0.47c-0.427,0.111-3.432,1.005-4.556,1.339c-1.126,0.334-1.849,0.46-1.849,0.46c-1.688,0.172-2.193-0.134-2.193-0.134c-0.296-0.124-0.261-0.526-0.261-0.526l0.009-1.147c0,0-0.027-0.433-0.357-0.611c-0.328-0.179-0.779-0.252-1.593-0.29c-0.811-0.038-1.683,0.044-2.093,0.134c-0.408,0.09-1.189,0.313-1.764,0.952c-0.572,0.641-0.481,1.139-0.481,1.139s0.004,0.079,0.01,0.201c0.154,0.245,0.416,0.524,0.862,0.739c1.015,0.485-1.137,1.342-1.137,1.342l0,0c-0.479,0.208-1.191,0.478-2.208,0.777c-2.21,0.647-3.684,0.774-3.684,0.774l0.679,0.254c0,0,5.468-1.016,7.148-2.616c0,0,0.625-0.293,0.021-0.88c-0.606-0.585-0.898-0.761-0.898-0.761s-0.41-0.223,0.02-0.772c0.428-0.546,0.922-0.794,1.352-0.933c0.428-0.135,1.754-0.249,2.925-0.093c0,0,0.491,0.042,0.457,0.407c-0.032,0.365-0.087,0.873-0.077,1.028c0.01,0.157,0.025,0.515,0.399,0.845c0.379,0.332,1.098,0.453,1.098,0.453s1.257,0.228,2.845-0.218c1.586-0.444,3.65-1.141,5.438-1.629L63.301,4.417L63.301,4.417z"/><linearGradient id="SVGID_37_" gradientUnits="userSpaceOnUse" x1="412.6152" y1="535.3994" x2="501.5865" y2="514.8846" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="&st56;" d="M91.596,12.992l0.271,0.486c-0.021,0.01-0.034,0.014-0.034,0.014c-1.114,0.515-3.999,1.32-4.271,1.398c-0.271,0.08-0.166,0.234-0.166,0.234c0.029,0.078,0.988,1.106,0.988,1.106c1.178,1.249,0.494,2.296,0.494,2.296s-0.852,1.347-2.844,1.12c-1.993-0.227-2.618-1.767-2.729-2.049c-0.111-0.282-0.197-0.768-0.22-1.095c-0.022-0.33-0.272-0.32-0.272-0.32c-1.069-0.03-2.887,1.089-2.887,1.089c-0.824,0.47-1.682,1.147-3.479,1.958c-0.879,0.396-1.694,0.716-2.287,0.936l-0.967-0.173l0.091,0.482c-0.042,0.013-0.063,0.021-0.063,0.021s-2.268,0.822-4.529,1.553c-2.268,0.732-3.65,0.8-3.65,0.8s-1.336,0.12-2.266-0.266c-0.93-0.386-0.959-0.94-0.939-1.415c0.021-0.476,0.483-1.404,0.623-1.958c0.139-0.555-0.683-0.644-0.683-0.644s-1.958-0.236-3.65,0.296c-1.69,0.535-2.54,1.159-2.54,1.159c-0.91,0.512-0.863,0.957-0.863,0.957s-0.012,0.467,0.551,0.869s1.072,0.505,1.736,0.654c0.668,0.149,0.791,0.311,0.791,0.311c1.08,0.894,0.416,1.785,0.047,2.434c-0.631,1.113-3.674,1.653-3.674,1.653c-3.276,0.758-5.12,1.08-7.827,1.452l-0.876-0.46l-0.276,0.615c-7.089,0.936-10.065,1.877-11.065,2.135c-1,0.257-1.261,0.784-1.369,0.904c-0.108,0.12,0.079,0.171,0.079,0.171c0.427,0.137,0.647,0.442,0.647,0.442s1.399,1.697-0.012,3.108c-1.359,1.36-2.785,1.674-2.785,1.674s-2.177,0.737-4.077,0.341c-1.899-0.399-2.439-1.889-2.416-2.395c0.024-0.505,0.176-1.075,0.694-1.661c0.517-0.585,0.654-0.667,0.654-0.667s0.358-0.279,0.421-0.415c0.079-0.172-0.404-0.233-0.404-0.233c-1.034-0.13-3.496-0.097-5.822,0.131c-1.439,0.14-2.769,0.374-3.578,0.518l-0.223-0.48l-0.543,0.625l-3.12,0.504c-1.514,0.222-2.576-0.028-2.576-0.028s-1.331-0.397-1.479-1.252c-0.147-0.852,0.359-1.87,0.49-2.177c0.13-0.307,0.5-0.934,0.5-0.934s0.068-0.13,0.068-0.34c0-0.211-0.233-0.536-0.233-0.536s-0.205-0.396-0.886-0.38c-0.682,0.018-0.866,0.131-1.144,0.364c-0.044,0.038-0.079,0.081-0.108,0.127c0.021-0.064,0.045-0.117,0.073-0.158c0.21-0.309,0.65-0.668,1.401-0.7c0.748-0.034,1.041,0.228,1.041,0.228c0.719,0.82,0.115,1.845-0.351,2.76c-0.057,0.095-0.155,0.271-0.229,0.483c-0.032,0.076-0.062,0.153-0.087,0.227c-0.358,1.06,0.292,1.565,0.668,1.661c0.376,0.097,1.141,0.57,4.269-0.031c3.13-0.603,3.587-0.731,3.587-0.731s6.145-1.087,8.96-0.425l0.023,0.004c0,0,1.297,0.367,0.331,1.334c-0.966,0.966-1.729,1.617-1.504,2.377c0.223,0.762,1.267,1.903,3.646,1.603c0,0,0.842-0.113,1.105-0.165c1.733-0.336,2.899-1.268,2.899-1.268s0.972-0.721,0.782-1.631c-0.187-0.908-1.017-1.189-1.017-1.189s-0.659-0.424-0.141-1.237c0,0,0.141-0.69,2.553-1.317c2.412-0.626,6.813-1.518,10.555-1.989c3.49-0.408,9.652-1.575,10.89-2.08c1.235-0.508,1.497-1.4,1.521-1.708c0.024-0.31,0.072-0.83-1.14-1.09c-1.213-0.259-1.758-0.655-1.931-0.79c-0.172-0.138-0.545-0.483-0.545-1.275c0-0.791,1.607-1.745,3.392-2.35c1.78-0.606,3.927-0.34,3.927-0.34c1.948,0.167,0.936,1.963,0.936,1.963c-0.074,0.322-0.946,1.785,0.5,2.169c1.541,0.409,4.175-0.347,5.188-0.669c0.829-0.261,3.141-1.074,4.688-1.62c0.352-0.122,0.66-0.231,0.908-0.318c1.656-0.577,3.019-1.219,3.785-1.681c0.771-0.462,2.144-1.297,2.144-1.297s1.351-0.744,1.799-0.808c0.451-0.064,1.619-0.346,1.771,0.771c0.155,1.115,0.631,1.899,1.4,2.271c0.771,0.371,2.064,0.538,3.246-0.231c1.182-0.771,0.359-1.901,0.359-1.901c-0.021-0.028-0.039-0.057-0.062-0.085c-0.151-0.27-0.369-0.518-0.487-0.646c-0.388-0.47-0.736-0.822-0.736-0.822c-0.295-0.436,0.053-0.692,0.425-0.834c0.373-0.141,2.351-0.758,2.351-0.758c1.155-0.383,1.592-0.551,2.053-0.988c0.445-0.419-0.189-1.34-0.239-1.412l0.004-0.002l0.608,0.256c0.136,0.182,0.27,0.362,0.4,0.547l-0.007,0.005c0,0,0.226,0.527,0.054,0.799c-0.095,0.149-0.343,0.293-0.545,0.395L91.596,12.992L91.596,12.992z"/><linearGradient id="SVGID_38_" gradientUnits="userSpaceOnUse" x1="390.042" y1="485.6797" x2="390.042" y2="485.6797" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#FFF"/><stop offset=".6538" stop-color="#FFF"/><stop offset="1" stop-color="#CBCCCE"/></linearGradient><path style="&st57;" d="M-16.122-14.641"/><path style="&st34;" d="M57.455,92.28c-0.034-0.042-0.042-0.034-0.012-0.063c0.021-0.021,0.086-0.082,0.115-0.137c0,0-1.17-0.063-2.141,0.077c-0.962,0.137-1.933,0.335-1.933,0.335l0.301,0.146c0,0,0.127-0.055,1.047-0.183c0.921-0.128,1.267-0.128,1.267-0.128s0.808-0.063,0.969-0.063c0.162,0,0.061,0.104,0.061,0.104s-0.078,0.136,0.366,0.124c0,0,0.663-0.027,1.313-0.188C58.809,92.309,57.678,92.544,57.455,92.28z"/><path style="&st34;" d="M54.469,92.691c0,0,0.146,0.266-2.923,0.394c0,0,1.788,0.052,3.31-0.198C55.963,92.707,54.469,92.691,54.469,92.691L54.469,92.691z"/><path style="&st34;" d="M13.114,9.856c0,0-0.005,0.096,0.019,0.131c0.024,0.034,0.107,0.112,0.107,0.112s0.328-0.5,0.194-0.438c0,0-0.119,0.187-0.164,0.23c0,0-0.029,0.04-0.088,0.077C13.123,10.006,13.117,9.991,13.114,9.856L13.114,9.856z"/><path style="&st34;" d="M10.595,12.501c0,0-0.388,0.46,0,0.52l0.528-0.527c0,0,0.139-0.234,0.139-0.398C11.263,12.095,10.752,12.343,10.595,12.501L10.595,12.501z"/><path style="&st12;" d="M-16.122-14.641"/><path style="&st31;" d="M21.093,23.707c1.227,0.146,1.499-0.132,1.527-0.172c0.294-0.003,1.475-0.034,2.865-0.207c1.685-0.21,3.564-0.891,3.564-0.891s1.554-0.568,2.096-1.18l0.016-0.002c0,0-0.693-0.6-1.057-1.122c0,0-0.286-0.557,0.027-1.035c0.316-0.479,0.836-1.008,2.344-1.643c1.506-0.636,2.356-0.514,2.356-0.514s0.594-0.006,1.007,0.45c0.415,0.458,0.649,1.006,0.649,1.006s0.029,0.38-0.115,0.63c-0.141,0.251-0.155,0.277-0.155,0.277s0.049,0.017,0.378-0.007c0.329-0.021,1.165-0.142,2.67-0.506c1.508-0.363,3.407-0.972,3.407-0.972s4.9-1.578,5.407-1.714c0.507-0.135,1.357-0.436,1.357-0.436l0.027,0.059c0,0,0.405,0.663,0.392,1.269V16.94c0,0-0.021,0.301-0.698,0.818c-0.674,0.517-1.226,0.479-1.678,0.442c-0.452-0.039-0.665-0.071-0.794-0.045l-0.72,0.04c-0.787,0.111-1.224,0.407-1.224,0.407c-1.804,1.065,0.731,9.287,0.731,9.287c-3.742,0.47-8.143,1.363-10.555,1.989c-2.412,0.627-2.553,1.317-2.553,1.317c-0.519,0.813,0.141,1.236,0.141,1.236s0.829,0.283,1.017,1.19c0.19,0.91-0.783,1.629-0.783,1.629s-1.159,0.97-2.898,1.268c-1.738,0.298-2.396,0.35-3.429-0.47c-0.91-0.721-0.297-1.864,0.312-2.301c0.612-0.438,0.909-0.91,0.988-1.113c0.079-0.203,0.032-0.376,0.032-0.376l-0.58-0.534c-2.005-1.33-9.884,0.063-9.884,0.063c-0.213-1.169-0.362-1.171-0.282-3.117c0.051-1.244,0.291-1.752,0.291-1.752l0.058-0.164c0,0,0.448-1.443,1.141-2.44c0,0,0.602-0.172,1.364-0.349C20.616,23.793,21.093,23.707,21.093,23.707L21.093,23.707z"/><linearGradient id="SVGID_39_" gradientUnits="userSpaceOnUse" x1="231.2324" y1="-407.8711" x2="263.6191" y2="-407.8711" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#696969"/><stop offset=".3702" stop-color="#2E2E2E"/><stop offset=".4554" stop-color="#424242"/><stop offset=".6014" stop-color="#303030"/><stop offset=".6947" stop-color="#4A4A4A"/><stop offset="1" stop-color="#666666"/></linearGradient><path style="&st26;" d="M49.855,16.94c0,0-4.085,1.326-3.891,1.254c0,0-0.39,0.075-0.686,0.161c-0.294,0.086-0.539,0.247-0.539,0.247s-3.288,1.222-6.438,1.848c-3.148,0.627-2.977-0.361-2.708-0.83c0.232-0.409,0.829-1.112-0.188-1.254c-1.019-0.14-1.788,0.251-2.21,0.439c-0.422,0.189-3.162,1.362-1.251,2.254c0,0,1.423,0.642-0.377,1.755c0,0-1.816,1.16-5.355,1.77c0,0-0.565,0.063-1.88,0.111c-1.316,0.046-2.558,0.213-4.12,0.658c-1.378,0.391-1.992,0.579-2.744,1.065l0.194-0.501l0.2-0.462c1.069-0.533,3.719-1.288,5.717-1.378c1.997-0.089,2.908-0.16,4.721-0.624c2.134-0.546,2.702-1.019,2.93-1.163c0.194-0.123,0.771-0.479,0.493-0.633c-0.359-0.199-0.895-0.729-0.895-0.729c-0.217-0.256-0.39-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.534,2.334-0.514c1.305,0.021,1.287,0.752,1.287,0.752s0.062,0.34-0.268,0.827c0,0-0.503,0.579-0.049,0.656c0.454,0.081,1.622,0.179,5.48-1.028c3.859-1.207,8.085-2.611,8.085-2.611S49.855,16.66,49.855,16.94L49.855,16.94z"/><linearGradient id="SVGID_40_" gradientUnits="userSpaceOnUse" x1="231.623" y1="-407.063" x2="263.4941" y2="-407.063" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#525252"/><stop offset=".1856" stop-color="#333333"/><stop offset=".354" stop-color="#AEAEAE"/><stop offset=".4199" stop-color="#ADADAD"/><stop offset=".4276" stop-color="#9D9D9D"/><stop offset=".4433" stop-color="#818181"/><stop offset=".4611" stop-color="#6A6A6A"/><stop offset=".4814" stop-color="#585858"/><stop offset=".506" stop-color="#4C4C4C"/><stop offset=".539" stop-color="#444444"/><stop offset=".6166" stop-color="#424242"/><stop offset=".6684" stop-color="#454545"/><stop offset="1" stop-color="#BDBDBD"/></linearGradient><path style="&st58;" d="M31.145,21.257c-0.541,0.612-2.096,1.18-2.096,1.18s-1.88,0.68-3.564,0.891c-1.608,0.201-2.777,0.209-2.777,0.209l-0.082-0.002c-0.175,0.145-0.483,0.188-0.728,0.21c-0.244,0.023-0.806-0.039-0.806-0.039s-2.156,0.432-2.603,0.616c0,0-0.253,0.392-0.331,0.539c-0.08,0.146-0.299,0.594-0.299,0.594c1.069-0.534,3.718-1.289,5.717-1.379c1.997-0.089,2.908-0.159,4.721-0.624c2.134-0.546,2.702-1.019,2.929-1.163c0.195-0.123,0.771-0.479,0.493-0.633c-0.358-0.199-0.894-0.729-0.894-0.729c-0.217-0.256-0.391-0.373-0.158-1.046c0.356-1.029,2.196-1.644,2.196-1.644s1.028-0.533,2.333-0.514c1.306,0.021,1.287,0.753,1.287,0.753s0.062,0.34-0.269,0.826c0,0-0.503,0.579-0.049,0.657c0.455,0.08,1.622,0.178,5.48-1.028c3.858-1.208,8.085-2.612,8.085-2.612c-0.098-0.29-0.296-0.652-0.296-0.652s-0.85,0.301-1.358,0.436c-0.506,0.136-5.407,1.714-5.407,1.714s-1.9,0.608-3.407,0.972c-1.506,0.364-2.342,0.485-2.671,0.508c-0.329,0.021-0.378,0.006-0.378,0.006s0.013-0.027,0.156-0.279c0.144-0.248,0.115-0.629,0.115-0.629s-0.235-0.548-0.649-1.006c-0.414-0.457-1.007-0.45-1.007-0.45s-0.849-0.121-2.355,0.514c-1.508,0.636-2.029,1.164-2.346,1.643c-0.312,0.478-0.026,1.035-0.026,1.035c0.365,0.521,1.057,1.122,1.057,1.122"/><linearGradient id="SVGID_41_" gradientUnits="userSpaceOnUse" x1="236.917" y1="-417.333" x2="235.8882" y2="-410.5272" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)"><stop offset="0" stop-color="#969696"/><stop offset="1" stop-color="#000"/></linearGradient><path style="&st24;" d="M21.606,31.241c0,0-0.064-0.328,0.172-0.939c0.234-0.611,0.908-0.595,1.362-0.503c0.455,0.095,0.846,0.298,1.472-0.124c0.627-0.423,0.47-1.583,0.046-2.852c-0.423-1.267-0.328-2.128-0.328-2.128l-0.608-0.649l-0.237,0.696c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.034-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.161-1.082,2.161L21.606,31.241z"/><path style="&st60;" d="M27.498,36.633c-0.264-1.763-0.917-2.749-0.917-2.749c-0.25,0.188-0.513,0.693-0.513,0.693s0.179,0.208,0.471,1.568c0,0,0.141,0.106,0.438,0.279C27.273,36.597,27.498,36.633,27.498,36.633z"/><path style="&st60;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.454-0.379,0.585-0.68c0,0-0.145-0.458,0.138-1.017C33.5,33.52,33.37,33.1,33.152,32.881L33.152,32.881z"/><linearGradient id="SVGID_42_" gradientUnits="userSpaceOnUse" x1="428.7803" y1="532.0527" x2="429.5303" y2="524.4692" gradientTransform="matrix(1 0 0 1 -406.1641 -500.3203)"><stop offset="0" stop-color="#333333"/><stop offset=".431" stop-color="#000"/><stop offset="1" stop-color="#2E2E2E"/></linearGradient><path style="&st3;" d="M21.2,31.253c0.017-1.299,0.471-1.492,0.905-1.818c0.436-0.328,1.326-0.024,1.326-0.024s0.678,0.218,1.046-0.1c0.369-0.319-0.017-1.467-0.217-2.123c-0.202-0.653-0.41-1.599-0.445-2.262c-0.025-0.489-0.091-0.707-0.125-0.789l-0.205,0.604c0.047,1.316,0.657,3.226,0.829,3.759c0.173,0.533,0.297,0.8-0.735,0.517c-1.035-0.282-1.519,0.125-1.519,0.125c-1.332,0.862-1.082,2.162-1.082,2.162l0.259-0.027L21.2,31.253L21.2,31.253z"/><path style="&st21;" d="M26.239,34.29c0.045,0.06,0.421,0.597,0.736,2.113l0.005,0.025c0.294,0.17,0.519,0.205,0.519,0.205c-0.264-1.763-0.917-2.749-0.917-2.749C26.46,33.977,26.336,34.143,26.239,34.29L26.239,34.29z"/><path style="&st21;" d="M33.152,32.881c0,0-0.78,0.907-0.378,2.336c0,0,0.125-0.104,0.262-0.248l0.021-0.051c-0.304-1.033,0.283-1.763,0.283-1.763l0.004-0.003C33.291,33.053,33.225,32.957,33.152,32.881z"/><path style="&st10;" d="M17.159,8.189h0.117c-0.16,0.481-0.789,1.141-1.068,1.583c-0.156,0.248-0.252,0.572-0.474,0.751c0.038,0.043-0.003,0.003,0.04,0.04c0.088,0.052,0.813-0.139,0.95-0.236c0.082,0.015,0.076,0.011,0.12,0.039c0.042,0.07-0.481,0.991-0.595,1.109v0.04c0.196-0.023,0.502-0.056,0.634-0.16c0.383-0.299,0.47-0.937,0.75-1.346c-0.013-0.066-0.026-0.132-0.04-0.196c-0.222-0.04-0.681,0.02-0.87,0.157h-0.039c0.091-0.473,0.868-1.346,1.146-1.741c0.454-0.647,0.881-1.269,1.345-1.9c0.243-0.331,0.585-0.622,0.831-0.949c0.276-0.367,0.569-0.85,0.949-1.107V4.194h-0.158c-0.186,0.135-0.675,0.218-0.908,0.354c0.032,0.135,0.019,0.101,0.118,0.158c-0.139,0.386-0.598,0.673-0.832,0.991c-0.371,0.5-0.784,0.968-1.147,1.464c-0.123,0.164-0.205,0.421-0.356,0.553c-0.237,0.208-0.913,0.185-1.185,0.396h-0.08c0.056-0.332,0.907-1.392,1.147-1.622v-0.04c-0.408,0.057-0.724,0.273-0.989,0.473c0.044,0.091,0.037,0.073,0.12,0.12c-0.145,0.238-0.361,0.415-0.515,0.633c-0.197,0.275-0.305,0.602-0.514,0.871c0.014,0.04,0.028,0.077,0.04,0.118C15.948,8.641,17.001,8.307,17.159,8.189L17.159,8.189z M51.936,13.534c0.199,0.066,0.396,0.131,0.596,0.197c0.159,0.002,0.327-0.002,0.432-0.04c-0.009-0.654-0.364-0.913-0.593-1.345c-0.113-0.22-0.175-0.523-0.355-0.673c0.069-0.242,0.727-0.308,0.988-0.396c0.643-0.211,1.371-0.422,2.02-0.633c0.305-0.099,0.664-0.077,0.91-0.236c0.146,0.015,0.22,0.029,0.277,0.118c0.143,0.212,0.26,1.667,0.156,2.097c-0.398,1.663-0.896,2.963-1.938,3.958v0.039c0.385-0.062,0.568-0.436,0.83-0.632c1.051-0.794,1.762-1.972,2.137-3.444c0.221-0.865-0.14-1.713,0.199-2.452h-0.039c-0.074-0.188-1.082-0.553-1.388-0.555c-0.164,0.177-0.399,0.416-0.634,0.515c-0.357,0.152-0.838,0.109-1.146,0.315c-0.287-0.024-0.506-0.57-0.315-0.791c-0.011-0.09-0.009-0.112-0.04-0.158c-0.239-0.191-0.85-0.171-1.268-0.158c-0.133,0.125-0.252,0.15-0.314,0.358h-0.039c-0.021,0.076,0.02,0.05,0.039,0.078c0.025,0.016,0.163-0.007,0.236,0.04c0.449,0.047,0.438,0.566,0.675,0.831c-0.027,0.069-0.011,0.04-0.042,0.08c-0.155,0.123-1.301,0.453-1.543,0.515c-0.185,0.046-0.414-0.068-0.553-0.081c-0.336-0.028-0.633,0.16-0.831,0.277c0.107,0.157,0.434,0.118,0.554,0.276C51.368,12.193,51.556,12.913,51.936,13.534L51.936,13.534z M59.807,12.977c0.187,0.093,0.187,0.332,0.278,0.514c0.185,0.371,0.437,0.82,0.554,1.228v0.316c0.092,0.252,0.396,0.284,0.596,0.435c0.156-0.021,0.214-0.061,0.314-0.118c-0.066-0.753-0.525-1.378-0.791-1.979c-0.08-0.188-0.207-0.452-0.236-0.633c-0.021-0.109,0.063-0.169,0-0.276c-0.051-0.123-0.072-0.085-0.156-0.159c-0.059-0.04-0.031-0.016,0-0.078c0.068-0.144,0.213-0.287,0.275-0.436c0.133-0.313,0.127-0.576,0.396-0.751c-0.04-0.41-0.639-0.457-1.107-0.435c-0.057,0.042-0.156,0.064-0.24,0.077c0.05,0.103,0.082,0.124,0.199,0.157c0.113,1.161-0.699,2.225-1.229,2.928c-0.208,0.279-0.556,0.456-0.75,0.754h-0.04v0.038C58.395,14.473,59.54,13.383,59.807,12.977L59.807,12.977z M12.407,22.83c-0.081,0.017-0.076,0.009-0.117,0.039c-0.288,0.148-0.773,1.426-1.346,1.069c-0.292,0.002-0.319-0.055-0.476-0.16c0.02-0.376,0.659-1.063,0.913-1.226c0.031-0.604,0.187-1.252,0.118-1.819c-0.041-0.014-0.08-0.028-0.118-0.039c-0.14-0.046-0.25,0.168-0.357,0.276c-0.29,0.291-0.648,0.597-0.871,0.949c-0.337-0.003-1.414-0.013-1.623,0.119H8.411c0.099-0.256,0.86-1.096,0.633-1.464c-0.013-0.041-0.025-0.08-0.04-0.12c-0.722,0.002-1.592,1.287-1.82,1.82c-0.115,0.266-0.115,0.573-0.276,0.791v0.04c0.54-0.066,1.082-0.133,1.622-0.199c0.205-0.044,0.487,0.052,0.633-0.039h0.554c0.092-0.118,0.184-0.238,0.277-0.356c0.33-0.349,0.768-0.702,1.028-1.106h0.119v0.551c-0.303,0.273-0.773,0.695-0.91,1.108v0.316c-0.203,0.88,0.223,1.329,0.99,1.267c0.5-0.466,1.324-0.848,1.226-1.779C12.405,22.833,12.444,22.873,12.407,22.83L12.407,22.83z M7.819,22.118H7.58c0.109-0.436,0.537-0.935,1.069-0.95v0.197c-0.185,0.239-0.369,0.475-0.554,0.713C7.982,22.076,7.88,22.076,7.819,22.118z M93.044,22.315c-0.164-0.405-0.294-0.722-0.475-1.068c-0.3-0.574-0.613-1.414-1.464-1.425c-0.211,0.179-0.435,0.322-0.555,0.593c-0.777,1.762,0.819,3.747,1.543,4.71c0.256,0.339,0.557,0.712,0.948,0.908c-0.091,1.376-1.269,1.813-2.53,1.267c-0.899-0.386-1.617-1.237-2.179-1.979c-0.188-0.249-0.481-0.457-0.672-0.713c-0.177-0.239-0.304-0.507-0.515-0.713v-0.039h-0.078c0.107,0.426,0.354,0.815,0.514,1.188c0.669,1.538,1.52,2.614,2.811,3.521c0.608,0.428,1.621,1.104,2.494,0.475C94.412,27.942,93.669,23.851,93.044,22.315L93.044,22.315z M92.928,24.216c-0.104,0.1-0.539-0.419-0.635-0.515c-0.441-0.443-1.329-1.221-0.83-1.979h0.197c0.388,0.403,0.746,0.788,0.99,1.344c0.129,0.299,0.152,0.805,0.313,1.069C92.941,24.205,92.958,24.175,92.928,24.216L92.928,24.216z M66.693,32.128v-0.395c0.179-0.801,0.137-1.765,0.314-2.572c0.241-1.088-0.101-2.148,0.99-2.414c0.021-0.106,0.057-0.148,0-0.238c-0.025-0.067-0.009-0.039-0.04-0.079c-0.043-0.031-0.038-0.024-0.116-0.039c-0.305,0.222-1.131,0.373-1.543,0.474c-0.313,0.076-0.639,0.01-0.871,0.158c-0.039,0.013-0.078,0.027-0.119,0.04c0.014,0.079,0.025,0.159,0.041,0.237c0.451,0.147,0.867-0.031,1.067,0.356c0.13,0.252,0.112,1.157,0.039,1.504c-0.251,1.163-0.146,2.491-0.396,3.64c-0.086,0.397,0.022,1.171-0.157,1.463v0.08c-0.241-0.115-0.397-0.426-0.554-0.633c-0.354-0.467-0.875-0.84-1.229-1.305c-0.213-0.281-0.437-0.617-0.712-0.833c0.037-0.761,0.259-1.56,0.438-2.254c0.131-0.522,0.135-1.005,0.395-1.386c0.148-0.217,0.505-0.355,0.751-0.475c-0.002-0.1-0.004-0.146-0.04-0.198c-0.014-0.04-0.023-0.079-0.037-0.119c-0.543,0.081-1.003,0.341-1.505,0.475c-0.454,0.123-0.911,0.092-1.269,0.276c0.012,0.091,0.01,0.112,0.041,0.158c0.014,0.039,0.024,0.08,0.039,0.118c1.391-0.078,1.18,0.678,0.912,1.742c-0.084,0.326-0.029,0.775-0.199,1.028v0.079h-0.039c-0.285-0.433-0.713-0.852-1.067-1.227c-0.146-0.132-0.291-0.264-0.435-0.395c-0.104-0.137-0.16-0.312-0.278-0.436c0.024-0.437,0.38-0.549,0.713-0.672c-0.015-0.183-0.052-0.206-0.118-0.317c-1.031,0.151-1.927,0.73-3.086,0.791v0.041h-0.04c0.004,0.1,0.004,0.146,0.04,0.197v0.079c0.227,0.039,0.564-0.054,0.831,0.04c0.427,0.15,0.81,0.648,1.067,0.99c0.388,0.513,0.996,0.949,1.384,1.463c0.204,0.274,0.434,0.634,0.713,0.832c-0.038,0.696-0.229,1.428-0.396,2.058c-0.086,0.323-0.035,0.735-0.197,0.988c-0.025,0.069-0.01,0.039-0.041,0.08c-0.377-0.718-1.104-1.265-1.582-1.9c-0.918-1.22-1.938-2.319-2.889-3.521c0-0.167,0.01-0.268,0.08-0.356c0.073-0.229,0.359-0.443,0.633-0.476c0.015-0.12,0.033-0.135-0.039-0.238c-0.016-0.038-0.026-0.077-0.041-0.118c-0.803,0.123-1.521,0.497-2.293,0.714c-0.401,0.112-0.928,0.057-1.229,0.276c-0.04,0.013-0.08,0.026-0.117,0.04c0.021,0.152,0.061,0.176,0.117,0.277c0.314-0.005,0.646-0.092,0.949,0c0.793,0.241,1.361,1.137,1.818,1.742c0.201,0.266,0.513,0.483,0.713,0.751c0.849,1.129,1.808,2.146,2.65,3.285c0.328,0.442,0.771,0.825,1.066,1.304c0.179-0.004,0.216-0.025,0.316-0.079c0.213-0.929,0.332-1.866,0.596-2.81c0.119-0.432,0.269-0.942,0.314-1.424c0.327,0.117,0.592,0.607,0.793,0.871c0.618,0.821,1.491,1.502,2.057,2.373c0.164-0.007,0.182-0.026,0.277-0.078C66.352,34.819,66.521,33.473,66.693,32.128L66.693,32.128z M4.297,38.894c-0.013,2.467-0.142,6.269,1.781,6.806c0.7,0.193,1.087-0.271,1.306-0.595c0.786-1.17,0.565-3.446-0.199-4.43c-0.339,0.034-0.825,0.84-0.988,1.106c-0.082-0.016-0.075-0.011-0.119-0.04c-0.091-0.041-0.085-0.066-0.159-0.118c-0.06-0.933,0.127-1.802,0.159-2.691c1.044,0.102,1.941,0.696,3.007,0.751c-0.001-0.185,0-0.434,0.077-0.552c-0.009-0.092-0.007-0.112-0.04-0.16c-0.145-0.115-0.949-0.306-1.186-0.315v-0.04h-0.04c0.146-1.174-0.186-2.082-0.99-2.414c-0.449-0.08-0.897-0.16-1.346-0.239c-0.229-0.083-0.341-0.266-0.514-0.395c-0.058-0.38-0.133-0.806,0.159-1.029c-0.021-0.142-0.032-0.168-0.119-0.238v-0.039h-0.04c-0.133,0.228-0.245,0.493-0.315,0.792c-0.234,0.983,0.309,1.818,0.909,2.018c0.397,0.065,0.792,0.132,1.188,0.197c0.314,0.122,0.453,0.379,0.671,0.595c-0.009,0.512-0.5,0.568-0.91,0.435c-0.64-0.208-1.321-0.353-1.977-0.592c-0.172-0.064-0.333-0.17-0.555-0.199c-0.027,0.25-0.054,0.501-0.08,0.751c0.554,0.171,1.109,0.343,1.662,0.515c-0.023,1.398-0.574,3.074,0.119,4.153c0.084,0.021,0.143,0.037,0.198,0.08c0.78-0.054,0.943-0.68,1.345-1.108c0.342,0.82,0.086,2.253-0.671,2.453c-0.326,0.224-0.803-0.066-0.989-0.237c-0.648-0.599-0.785-1.511-1.027-2.532c-0.083-0.344,0.033-1.042-0.118-1.307c0.006-0.404,0.092-1.134-0.12-1.344v-0.039L4.297,38.894L4.297,38.894z M99.336,45.543c-0.143-0.666,0.055-1.478-0.08-2.097v-0.633c-0.097-0.453-0.059-1.056-0.156-1.502c-0.189-0.882-0.022-1.926-0.355-2.652c-0.197-0.047-0.393-0.084-0.671-0.08c-0.103,0.104-0.179,0.158-0.159,0.278c0.083,0.359,0.547,0.432,0.673,0.792c0.015,0.172,0.026,0.343,0.04,0.514c0.133,0.561,0.111,1.286,0.236,1.86v0.475c0.063,0.289,0.16,1.036,0.078,1.267c-0.139,0.41-0.584,0.78-0.868,1.068c-0.754,0.755-1.64,1.715-2.97,1.859c-0.025,0.068-0.01,0.039-0.041,0.08c0.022,0.494,0.476,0.396,0.793,0.594c0.08-0.014,0.158-0.028,0.236-0.042c0.122-0.074,0.191-0.242,0.276-0.356c0.2-0.261,0.563-0.399,0.751-0.671h0.04c0.002,1.205,0.028,2.561,0.04,3.718h0.117c0.272-1.172,0.252-2.61,0.238-4.039c0.521-0.486,0.853-1.19,1.385-1.66v-0.078h0.041c0.007,1.251,0.037,2.529,0.037,3.797c0,0.407-0.102,1.378,0,1.544v0.237h0.08c0.106-0.425,0.133-1.023,0.236-1.501v-0.674C99.451,47.107,99.45,46.078,99.336,45.543L99.336,45.543z M28.313,48.073c-0.347-0.144-0.776-0.461-0.989-0.751c-0.637-0.875-1.337-2.948-0.87-4.51c0.379-1.266,1.202-2.127,2.532-2.454c0.673-0.163,1.397,0.062,1.821,0.278c1.208,0.622,1.725,1.506,2.096,2.967c0.48,1.887-0.132,3.619-1.385,4.194c0.078,0.764,0.158,1.529,0.237,2.295c0.444-0.013,0.852-0.105,1.227-0.199c0.629-0.155,1.271-0.176,1.86-0.315c0.431-0.104,1.052-0.015,1.384-0.237c0.079-0.17-0.247-1.35-0.315-1.623c-0.057-0.229-0.009-0.461-0.119-0.633v-0.079c-0.091,0.012-0.185,0.025-0.277,0.039c0.018,1.195-0.834,1.032-1.781,1.267c-0.473,0.119-1.049,0.27-1.581,0.276c0-0.17,0-0.343-0.001-0.514c0.045-0.083,0.739-0.386,0.868-0.476c0.461-0.318,0.931-0.826,1.229-1.304c0.202-0.327,0.366-0.764,0.473-1.149c0.138-0.489,0.154-1.17,0.041-1.662c-0.079-0.338-0.048-0.603-0.158-0.91c-0.427-1.187-1.322-2.054-2.453-2.532c-0.513-0.216-1.093-0.224-1.7-0.356c-0.539-0.116-1.509,0.124-1.901,0.238c-1.905,0.562-3.198,1.48-3.799,3.323c-0.236,0.728-0.163,1.736,0.04,2.414c0.467,1.561,1.773,3.02,3.72,3.047v0.039c0.062,0.088,0.06,0.264,0.118,0.355c-0.024,0.067-0.009,0.039-0.04,0.08c-0.164,0.111-0.404,0.061-0.633,0.117c-0.47,0.118-1.986,0.486-2.334,0.158c-0.222-0.072-0.37-0.363-0.396-0.632c-0.099,0.004-0.146,0.004-0.197,0.039h-0.082c0.146,0.767,0.291,1.53,0.435,2.296h0.041v0.04c1.385-0.239,2.77-0.478,4.154-0.713c-0.198-0.728-0.395-1.451-0.593-2.179C28.873,48.139,28.517,48.159,28.313,48.073L28.313,48.073z M96.014,43.682c0.086,0.218,0.254,0.58,0.435,0.712c0.086,0.063,0.132,0.04,0.198,0.119c1.31,0.113,1.842-2.143,1.308-3.442c-0.095-0.225-0.517-0.885-0.911-0.633h-0.08c0.026-0.069,0.01-0.038,0.04-0.08c-0.001-0.188-0.021-0.25-0.077-0.356c-0.08-0.013-0.156-0.026-0.238-0.038c-0.039,0.031-0.01,0.014-0.078,0.038c0.027,0.24,0.111,0.247,0.119,0.514C96.09,41.099,95.545,42.497,96.014,43.682z M96.446,41.585c0.088-0.213,0.265-0.35,0.396-0.515c0.082-0.015,0.075-0.01,0.117-0.04c0.301-0.001,0.385,0.057,0.555,0.159c0.301,0.711,0.346,1.954-0.156,2.494c-0.077,0.085-0.229,0.116-0.315,0.197C96.214,43.817,96.146,42.305,96.446,41.585L96.446,41.585z M78.092,57.168c-0.445-0.273-0.507-1.675-0.673-2.294c-0.327-1.215-0.483-2.489-0.831-3.72c-0.223-0.788-0.523-1.605-0.435-2.572c0.139-0.138,0.231-0.32,0.396-0.436c0.223-0.154,0.58-0.229,0.752-0.436c0.027-0.051-0.019-0.128-0.041-0.238c-0.459,0.074-0.879,0.35-1.267,0.515c-0.792,0.337-1.567,0.536-2.373,0.87c-0.252,0.104-0.515,0.282-0.833,0.315v0.238c0.027,0.014,0.055,0.025,0.08,0.04c0.042,0.045,1.033-0.392,1.346-0.118c0.356,0.125,0.311,0.59,0.514,0.872c-0.061,0.614-0.672,1.558-0.912,2.097c-0.58,1.326-1.17,2.592-1.816,3.836c-0.248,0.477-0.543,1.334-0.871,1.701v0.039c-0.216-0.296-0.199-1.051-0.314-1.462c-0.353-1.235-0.578-2.591-0.951-3.798c-0.068-0.23-0.305-1.279-0.156-1.503c0.051-0.546,0.822-0.785,1.266-0.95c-0.012-0.092-0.024-0.186-0.039-0.277c-0.701,0.105-1.429,0.479-2.058,0.713c-0.595,0.223-1.14,0.313-1.741,0.516c-0.298,0.102-0.636,0.275-0.986,0.314v0.041h-0.041c0.015,0.112,0.025,0.172,0.078,0.237c0.162,0.107,1.03-0.352,1.386-0.077c0.557,0.19,0.573,1.075,0.752,1.66c0.481,1.579,0.728,3.327,1.187,4.947c0.115,0.404,0.391,1.686,0.119,2.018c-0.148,0.439-0.885,0.615-1.306,0.791c0.014,0.08,0.024,0.159,0.036,0.237c0.609-0.09,1.162-0.373,1.707-0.56c1.063-0.354,2.066-0.65,3.089-1.029c-0.017-0.092-0.027-0.186-0.041-0.275c-0.437,0.116-0.773,0.248-1.386,0.236c-0.08-0.068-0.157-0.133-0.235-0.199c-0.067-0.21-0.134-0.422-0.199-0.632c0.043-0.499,0.683-1.421,0.91-1.86c0.673-1.293,1.262-2.6,1.856-3.955c0.229-0.519,0.754-1.275,0.832-1.857c0.184,0.111,0.133,0.438,0.197,0.672c0.135,0.475,0.211,0.98,0.355,1.503c0.281,1,0.391,2.075,0.673,3.126c0.104,0.387,0.261,1.048,0.08,1.464c-0.179,0.404-0.841,0.673-1.267,0.83c0.017,0.084,0.037,0.183,0.08,0.238c0.004,0.007,0.906-0.288,1.064-0.354c1.104-0.471,2.236-0.959,3.361-1.386c-0.015-0.093-0.024-0.187-0.039-0.274C79.117,57.043,78.477,57.407,78.092,57.168L78.092,57.168z M96.803,60.498c-0.143,0.13-0.354,0.163-0.514,0.277c-0.501,0.359-1.025,0.962-1.385,1.463c-0.288,0.402-0.534,0.843-0.791,1.268c-0.112,0.188-0.137,0.402-0.277,0.553v0.08c0.346-0.059,0.549-0.283,0.792-0.436c0.659-0.408,1.249-0.781,1.858-1.225c0.295-0.217,0.515-0.551,0.83-0.754c0.029-0.473,0.125-0.844-0.077-1.188C97.115,60.512,96.975,60.496,96.803,60.498z M96.329,61.921c-0.239,0.177-0.47,0.423-0.712,0.595c-0.208,0.146-0.458,0.224-0.633,0.396h-0.04c0.13-0.408,0.817-1.107,1.146-1.344c0.17-0.124,0.383-0.157,0.557-0.279h0.156c0.036,0.046,0.034,0.044,0.08,0.08C96.846,61.667,96.523,61.774,96.329,61.921L96.329,61.921z M10.825,63.465c-0.166-0.502-0.278-0.99-0.435-1.465c-0.079-0.246-0.062-0.525-0.199-0.713v-0.118c0.269,0.097,0.679,0.087,0.911,0.238h0.201c-0.045-0.206-0.086-0.552-0.201-0.713c-0.12-0.195-0.886-0.197-1.106-0.354c-0.312-0.244-0.607-0.947-0.832-1.307c-0.56-0.887-1.302-1.832-2.137-2.453c-0.443-0.329-0.751-0.671-1.544-0.673c-0.092,0.065-0.185,0.132-0.276,0.198c-0.178,0.789,0.139,2.248,0.592,2.611v0.078c-0.189-0.051-0.393-0.152-0.514-0.275h-0.04c0.007,0.227,0.051,0.522,0.158,0.672c0.046,0.195,0.362,0.354,0.554,0.396c0.248,1.037,0.592,2.101,0.95,3.05c0.289,0.758,0.436,1.48,0.75,2.213c0.155,0.356,0.522,0.617,0.634,0.99h0.117c-0.089-0.334-0.271-0.646-0.394-0.949c-0.364-0.875-0.653-1.804-0.952-2.688C6.868,61.62,6.734,61.057,6.548,60.5c-0.069-0.21-0.049-0.427-0.158-0.595v-0.039c0.269,0.049,0.43,0.188,0.634,0.276c0.461,0.201,0.903,0.277,1.385,0.476c0.353,0.146,0.796,0.347,1.228,0.396c0.048,0.359,0.253,1.301,0.435,1.545v0.117c-0.602-0.412-0.589-1-1.663-0.91c-0.054,0.063-0.128,0.117-0.197,0.158c-0.098,0.244-0.104,0.646,0,0.909c0.257,0.646,1.072,1.991,1.741,2.179c0.257,0.184,0.634-0.043,0.75-0.24c0.242,0.127,0.293,0.682,0.395,0.951c0.212,0.558,0.522,1.289,1.031,1.543v0.041h0.083c-0.066-0.447-0.318-0.851-0.475-1.229C11.387,65.223,11.113,64.324,10.825,63.465L10.825,63.465z M9.678,60.26C9.26,60.23,8.905,60.067,8.57,59.945c-0.894-0.332-1.703-0.615-2.492-0.991c-0.095-0.358-0.76-1.644-0.396-2.095c0.026-0.04,0.053-0.081,0.079-0.12c0.081-0.019,0.077-0.011,0.119-0.039c1.219,0.146,2.442,1.629,3.046,2.452c0.236,0.32,0.43,0.799,0.752,1.029V60.26L9.678,60.26z M10.311,63.701c-0.12,0.146-0.237,0.291-0.356,0.436c-0.105,0.078-0.223,0.109-0.316,0.198c-0.68-0.021-0.704-0.686-0.989-1.108c0.005-0.389,0.152-0.39,0.315-0.594c0.092-0.007,0.112-0.007,0.158-0.037c0.614,0.004,0.753,0.278,1.109,0.515C10.29,63.344,10.327,63.445,10.311,63.701L10.311,63.701z M33.578,69.794c-0.165-0.271-0.49-0.342-0.713-0.554c-0.069-0.023-0.04-0.007-0.079-0.039c0.51-0.264,1.053-0.555,1.583-0.79c0.142,0.158,0.801,0.792,1.029,0.671c0.04-0.012,0.079-0.023,0.118-0.038c-0.013-0.224-0.025-0.448-0.04-0.673c-0.499-0.498-1.234-0.91-2.059-1.066v0.039h-0.039c0.093,0.273,0.398,0.534,0.636,0.672v0.119c-0.469,0.068-0.885,0.295-1.307,0.437c-0.289,0.093-0.638,0.08-0.873,0.235h-0.117c0.171-0.479,0.737-0.871,1.028-1.267c0.576-0.776,1.033-1.728,1.94-2.176c-0.024-0.365-1.076-1.12-1.464-0.871c-0.097,0.051-0.029-0.021-0.079,0.078c-0.059,0.144,0.137,0.321,0.079,0.554c-0.076,0.305-0.831,1.74-1.029,1.9v0.041c-0.408-0.139-0.718-0.523-1.107-0.713c0.069-0.364,0.375-0.644,0.554-0.91c0.453-0.684,0.816-1.335,1.503-1.782c-0.006-0.526-0.855-1.075-1.425-1.065c0.002,0.242,0.125,0.379,0.08,0.592c-0.14,0.646-0.435,1.297-0.672,1.861c-0.156,0.364-0.226,0.799-0.476,1.065c-0.054,0.03-0.492-0.006-0.594-0.077c-0.149-0.002-0.298,0.005-0.394,0.038v0.079c0.666,0.645,1.387,0.865,2.295,1.268c-0.126,0.655-0.786,1.092-1.108,1.584c-0.166,0-0.3-0.011-0.395-0.08c-0.091,0.017-0.098,0.021-0.158,0.041c0.016,0.582,0.5,1.077,0.987,1.188c0.327-0.366,0.737-0.543,1.228-0.751c0.449,0.468,0.578,1.137,0.751,1.897c0.075,0.332-0.047,0.697,0.04,0.988c0.152,0.514,0.426,0.667,0.672,1.027h0.277c0.174-0.93-0.253-1.832-0.475-2.571C33.71,70.43,33.644,70.111,33.578,69.794L33.578,69.794z M96.09,63.108c-0.238,0.202-0.57,0.296-0.83,0.475c-0.4,0.282-0.758,0.659-1.146,0.95c-0.177,0.134-0.435,0.253-0.556,0.436c-0.199,0.299-0.16,0.806-0.396,1.067v0.157c0.314-0.114,0.464-0.483,0.713-0.672c0.307-0.23,0.563-0.536,0.87-0.754c0.192-0.133,0.411-0.207,0.594-0.355c0.125,0.023,0.115,0.037,0.199,0.081c-0.021,1.005-0.549,1.714-0.871,2.454c-0.093,0.215-0.121,0.551-0.276,0.71c-0.074,0.076-0.229,0.094-0.314,0.157c-0.264,0.291-0.528,0.58-0.794,0.873c-0.25,0.344-0.365,0.803-0.632,1.146c-0.002,0.114-0.002,0.216,0.037,0.276c0.041,0.031,0.11,0.059,0.16,0.08c0.51-0.483,1.004-0.887,1.424-1.465c0.658-0.904,0.986-2.047,1.465-3.125c0.3-0.683,0.734-1.354,0.711-2.334c-0.047-0.045-0.084-0.102-0.117-0.158L96.09,63.108L96.09,63.108z M93.32,69.361V69.4h-0.04c0.069-0.475,0.43-0.606,0.596-0.952h0.079C93.904,68.842,93.605,69.194,93.32,69.361L93.32,69.361z M34.171,69.993c-0.08,0.342,0.76,1.106,1.027,1.308c0.133,0.1,0.312,0.328,0.515,0.235c0.104-0.008,0.136-0.019,0.199-0.04c0.046-0.105,0.115-0.24,0.039-0.354C35.93,70.645,34.64,70.088,34.171,69.993z M37.97,73.037c0.067,0.034,0.122,0.021,0.198-0.039c0.139-0.113,0.063-0.313,0.159-0.475c0.222-0.159,0.615-0.118,0.911-0.199c0.809-0.213,1.753-0.198,2.65-0.396c0.425-0.093,1.128,0.16,1.464-0.037c0.04-0.016,0.081-0.026,0.118-0.043c-0.019-0.517-1.009-0.737-1.545-0.588c-0.237,0.066-0.513,0.213-0.751,0.275c-0.185,0.014-0.37,0.027-0.555,0.038c-0.062-0.644-0.38-1.144-0.395-1.817c0.595-0.013,1.341-0.091,1.739-0.316c-0.008-0.2-0.045-0.2-0.118-0.314c-0.453-0.107-1.23-0.126-1.583,0.116c-0.1-0.004-0.147-0.004-0.197-0.039c-0.221-0.28-0.116-0.851-0.316-1.146v-0.158c0.426-0.092,1.122-0.168,1.345-0.475c0.031-0.041,0.014-0.011,0.039-0.078c-0.036-0.035-0.051-0.068-0.079-0.119c-0.619-0.156-0.887-0.049-1.423,0.158c-0.167-0.535,0.034-0.959-0.514-1.108c0.117-0.203,0.506-0.194,0.751-0.276c0.382-0.126,0.817-0.296,1.148-0.474c0.026-0.068,0.007-0.04,0.04-0.08c-0.022-0.2-0.078-0.193-0.159-0.316c-0.571-0.044-1.027,0.011-1.346,0.316h-0.076c0.047-0.295,0.231-0.718,0.394-0.949c0.112-0.162,0.318-0.14,0.396-0.356h0.04V64.1c-0.081-0.104-0.159-0.211-0.238-0.314c-0.186-0.13-0.454-0.143-0.632-0.279c-0.263-0.004-0.515-0.003-0.672,0.079c0.021,0.152,0.089,0.248,0.119,0.356c0.109,0.408-0.284,1.669-0.436,1.859c-0.123,0.154-1.551,0.672-1.939,0.555c-0.092-0.029-0.36-0.164-0.435-0.239c-0.032-0.039-0.015-0.008-0.04-0.077c0.561-0.527,0.965-1.702,1.741-1.939c0.014-0.064,0.027-0.131,0.041-0.196c-0.194-0.2-1.135-1.188-1.622-0.871c-0.04,0.014-0.079,0.022-0.117,0.038c0,0.338,0.168,0.593,0.078,0.949c-0.182,0.711-0.587,1.556-0.95,2.139c-0.218,0.35-0.693,0.729-0.712,1.229c0.646-0.064,0.802-0.731,1.304-0.912c0.146,0.135,0.29,0.267,0.436,0.396c0.207,0.311,0.168,0.778,0.276,1.186c0.185,0.856,0.371,1.715,0.554,2.571c0.025,0.425,0.052,0.845,0.08,1.269C37.246,72.28,37.561,72.945,37.97,73.037L37.97,73.037z M39.233,70.032c0.031,0.368,0.258,1.407,0.436,1.662c0.001,0.024,0.001,0.054,0.001,0.08c-0.477,0.102-0.973,0.239-1.504,0.237c-0.082-0.564-0.352-1.061-0.355-1.662C38.418,70.338,38.731,70.094,39.233,70.032z M36.939,66.75c0.063-0.107,1.113-0.273,1.228-0.199c0.42,0.195,0.27,0.813,0.514,1.188c-0.083,0.194-1.047,0.487-1.345,0.514C37.283,67.834,37.213,66.977,36.939,66.75L36.939,66.75z M38.76,68.253h0.04c0.076,0.36,0.119,0.978,0.317,1.267c-0.142,0.348-1.016,0.317-1.346,0.516c-0.138-0.083-0.32-1.076-0.316-1.346C37.757,68.662,38.541,68.402,38.76,68.253L38.76,68.253z M31.914,70.506c-0.06,0.135-0.053,0.354-0.117,0.514c-0.342,0.84-0.454,1.015,0.079,1.82c0.237,0,0.269-0.037,0.396-0.119C32.429,72.064,32.454,70.814,31.914,70.506L31.914,70.506z M77.023,70.744c-1.154-0.285-2.125,0.285-3.325,0.199c-0.114-0.121-0.2-0.19-0.275-0.356c-0.835,0.024-1.757,1.886-0.909,2.453c0.453,0.308,1.744,0.129,2.295,0c0.306-0.071,0.783-0.139,1.027,0.038c0.332,0.247,0.273,1.182,0.157,1.703c-0.132,0.975-0.265,1.951-0.396,2.929c-0.117,0.593-0.236,1.185-0.356,1.779c0.606-0.003,1.178-0.623,1.349-1.069c0.1-0.258,0.047-0.502,0.119-0.791c0.209-0.83,0.237-1.82,0.436-2.689c0.127-0.563,0.041-1.1,0.156-1.621c0.086-0.393,0.143-1.696,0.041-2.059C77.281,71.059,77.126,70.901,77.023,70.744z M22.857,82.695c-0.135-0.102-0.229-0.283-0.356-0.395c-0.473-0.42-1.029-0.826-1.543-1.188c-0.426-0.298-1.008-0.476-1.387-0.829c-0.01-0.086,0.123-0.296,0.041-0.516c-0.335-0.896-1.589-1.933-2.374-2.412c-0.363-0.225-0.972-0.328-1.305-0.555c-0.246-0.017-0.374-0.025-0.435,0.155c-0.097,0.218,0.209,0.521,0.315,0.675c0.271,0.381,0.581,0.826,0.95,1.104c0.276,0.209,0.591,0.392,0.83,0.635h0.119c-0.154-0.426-0.609-0.657-0.949-0.909c-0.311-0.229-0.449-0.632-0.712-0.909c0.021-0.125,0.035-0.115,0.08-0.199c1.093,0.009,1.802,1.012,2.294,1.662c0.22,0.291,0.571,0.461,0.594,0.951c-0.116,0-0.216,0-0.276-0.041h-0.119c0.188,0.522,0.824,0.479,1.267,0.754c0.888,0.549,1.603,1.409,2.373,2.094c0.262,0.234,0.719,0.466,0.791,0.873c-0.537-0.028-0.917-0.327-1.261-0.555c-0.614-0.4-1.597-1.1-2.019-1.662c-0.08-0.104-0.106-0.263-0.199-0.355c-0.109-0.111-0.261-0.145-0.355-0.275h-0.158c-0.039,0.41,0.407,0.705,0.671,0.948c0.819,0.75,1.696,1.442,2.73,1.979c0.373,0.191,1.053,0.521,1.465,0.275C23.874,83.434,23.227,82.975,22.857,82.695L22.857,82.695z M47.226,85.307c-2.014-1.379-4.985-2.775-8.427-2.689c-0.167,0.104-0.503,0.021-0.711,0.078c-0.288,0.076-0.464,0.223-0.672,0.355c-0.008,0.971,1.446,1.496,2.255,1.698c0.483,0.123,0.909-0.104,1.188-0.198c0.215-0.82-0.776-0.94-1.227-1.347h-0.081v-0.038c3.036-0.119,5.308,0.729,7.043,2.02c0.433,0.322,0.93,0.783,1.148,1.306c0.081,0.194,0.116,0.515,0,0.674c-0.159,0.44-0.685,0.401-1.188,0.515c-1.162,0.267-2.755-0.391-3.285-0.91c-0.108,0.189,0.049,0.48-0.118,0.674c-0.176,0.478-0.788,0.354-1.346,0.474c-0.917,0.199-2.353-0.271-2.888-0.632c-0.149-0.104-0.257-0.286-0.396-0.396c-0.007-0.103-0.018-0.136-0.041-0.199c0.081-0.073,0.177-0.187,0.237-0.275c1.139-0.085,1.718-0.027,2.376,0.596c-0.017,0.078-0.01,0.073-0.041,0.114c-0.074,0.152-0.245,0.17-0.474,0.161v0.074c0.417,0.004,0.593-0.059,0.83-0.197c0.013-0.079,0.027-0.159,0.04-0.236c-0.136-0.141-0.231-0.328-0.396-0.438c-0.65-0.426-1.991-0.641-2.729-0.156c-0.116,0.561,0.232,0.864,0.554,1.105c0.646,0.488,1.191,0.771,2.098,1.029c0.291,0.082,0.55,0.008,0.871,0.076c0.28,0.064,0.765,0.079,1.068,0c0.504-0.128,1.205-0.658,0.632-1.268v-0.037c0.299,0.109,0.544,0.402,0.831,0.556c0.761,0.397,2.021,0.726,3.167,0.476c0.562-0.125,1.143-0.125,1.303-0.635c0.179-0.277-0.068-0.668-0.156-0.826C48.322,86.151,47.836,85.721,47.226,85.307L47.226,85.307z M39.906,83.485c0.14,0.094,0.22,0.291,0.356,0.396c-0.003,0.1-0.004,0.148-0.04,0.199c-0.257,0.697-1.706,0.182-2.058-0.081c-0.11-0.08-0.153-0.248-0.236-0.354c0.015-0.082,0.01-0.076,0.041-0.116c0.108-0.306,0.417-0.203,0.671-0.354C39.142,83.174,39.596,83.274,39.906,83.485z M76.625,83.881h-0.396c-0.262,0.209-0.692,0.236-0.991,0.396c-0.263,0.141-0.581,0.332-0.829,0.515c-0.207,0.148-0.326,0.418-0.516,0.592c0.004,0.197,0.008,0.229,0.16,0.277c0.039,0.029,0.01,0.018,0.075,0.04c0.042-0.047,0.08-0.063,0.12-0.12c0.033-0.023-0.027-0.104-0.04-0.232c0.384-0.386,0.667-0.598,1.228-0.832c0.144-0.059,0.447-0.233,0.634-0.119h0.079c-0.026,0.391-0.916,1.591-1.188,1.781v0.115c0.729-0.188,1.215-1.643,1.702-2.174c-0.013-0.09-0.01-0.111-0.04-0.157L76.625,83.881L76.625,83.881z M73.459,86.809c-0.234,0.209-0.807,0.229-1.066,0.435h-0.041c0.104-0.149,0.291-0.213,0.396-0.354c0.076-0.104,0.107-0.226,0.197-0.315c-0.018-0.081-0.01-0.075-0.039-0.117v-0.08c-1.155-0.212-3.084,0.784-3.68,1.308c-0.155,0.135-0.248,0.336-0.396,0.477c0.003,0.111,0.016,0.168,0.039,0.236c0.701,0.047,2.016-0.383,2.174-0.949c0.031-0.025,0.012-0.002,0-0.04v-0.079c-0.479-0.027-1.124,0.075-1.422,0.355h-0.039c0.26-0.396,1.223-0.746,1.739-0.91c0.172-0.053,0.55-0.149,0.714-0.039c0.037,0.015,0.077,0.025,0.117,0.039c-0.094,0.396-0.657,0.838-1.029,0.949v0.08c0.607-0.141,1.163-0.416,1.7-0.634c0.368-0.149,0.786-0.188,1.108-0.396c0.229-0.149,1.008-1.207,1.068-1.504C74.086,85.409,74.012,86.313,73.459,86.809L73.459,86.809z M70.333,87.6v0.119c-0.075,0.049-0.129,0.156-0.198,0.196c-0.205,0.12-0.479,0.106-0.674,0.238c-0.09-0.011-0.109-0.009-0.156-0.041h-0.039C69.373,87.775,70.025,87.621,70.333,87.6L70.333,87.6z M53.835,91.317c0.015-0.037,0.025-0.078,0.039-0.117c-0.976-0.04-1.953-0.079-2.927-0.119c-0.123,0.082-0.312,0.035-0.475,0.079c-0.202,0.059-0.426,0.15-0.593,0.239c0.026,0.067,0.008,0.038,0.04,0.077c0.238,0.188,1.624,0.199,1.9,0h0.078v-0.077c-0.419-0.134-1.183,0.2-1.503,0h-0.041v-0.041c1.052-0.073,2.23-0.044,3.325-0.04c-0.105,0.072-0.328,0.051-0.436,0.119c-0.039,0.014-0.078,0.027-0.117,0.039v0.08c0.238,0.037,0.475,0.078,0.711,0.117c0.037,0.041-0.004,0.004,0.039,0.037c-0.35,0.233-1.254,0.139-1.581-0.037v-0.08c-0.178-0.082-0.991,0.084-1.148,0.117c-0.133,0.03-0.27-0.014-0.357,0.039c-0.165,0.01-0.181,0.029-0.276,0.079c0.022,0.128,0.035,0.115,0.08,0.198c0.255,0.06,0.696,0.064,0.987,0.156v-0.039h0.04v-0.039c-0.148-0.057-0.559-0.025-0.713-0.115h-0.079c0.132-0.104,1.425-0.278,1.663-0.119c0.067,0.023,0.039,0.007,0.079,0.039c-0.211,0.038-0.424,0.08-0.634,0.117c0.025,0.066,0.009,0.039,0.04,0.078c0.065,0.045,0.193,0.045,0.316,0.039c-0.04,0.074-0.054,0.109-0.119,0.158c0.013,0.023,0.027,0.051,0.04,0.078c0.561,0,1.031-0.057,1.502-0.156c0.28-0.062,0.624,0.052,0.831-0.08h0.317v-0.078c-0.539-0.002-1.885-0.055-2.215,0.158h-0.117c0.033-0.043-0.004-0.004,0.038-0.041c0.155-0.18,0.471-0.09,0.75-0.156c0.44-0.104,1.168-0.284,1.544,0c0.105,0.064,0.04-0.008,0.039,0.117c0.107-0.002,0.181-0.002,0.236-0.036h0.277v-0.081c-0.359-0.088-0.889-0.251-1.188-0.434C54.057,91.488,54.135,91.344,53.835,91.317L53.835,91.317z M13.635,18.359c-0.088,0.32-0.274,0.593-0.395,0.87c-0.268,0.613-0.507,1.225-0.751,1.822c-0.207,0.496-0.335,1.295-0.633,1.699v0.079c0.416-0.074,0.698-0.493,0.949-0.751c0.617-0.634,1.92-2.22,1.9-3.402c-0.062-0.061-0.119-0.162-0.159-0.237C14.3,18.38,13.982,18.353,13.635,18.359z M13.794,20.022c-0.181,0.298-0.281,0.592-0.476,0.871c-0.178,0.255-0.46,0.452-0.633,0.713h-0.041c0.051-0.302,0.214-0.546,0.319-0.792c0.235-0.561,0.396-1.118,0.671-1.621c0.152,0.003,0.268,0.015,0.356,0.078c0.095,0.052,0.028-0.018,0.079,0.08C14.15,19.548,13.89,19.862,13.794,20.022L13.794,20.022z M84.023,7.875c-0.414-0.416-0.729-0.938-1.147-1.346V6.49c-0.205,0.073-0.899,0.688-1.028,0.871c-0.25-0.095-0.391-0.365-0.594-0.514c-0.676-0.508-1.313-1.167-2.49-1.147c-0.148,0.115-0.367,0.118-0.556,0.197c-0.53,0.23-1.083,0.688-1.305,1.227c-0.249,0.602,0.004,1.491,0.196,1.939c0.392,0.904,1.03,1.667,1.582,2.414c0.457,0.615,0.973,1.252,1.819,1.464c0.956,0.238,1.422-0.884,1.781-1.308c0.37-0.435,1.182-0.539,1.464-1.107c0.104-0.207,0.034-0.615-0.039-0.791c-0.18-0.426-1.066-1.622-1.425-1.859c0.024-0.239,0.135-0.247,0.235-0.396c0.248,0.121,0.338,0.471,0.516,0.673c0.227,0.258,0.546,0.396,0.791,0.632c0.378,0.003,0.604-0.094,0.79-0.277h0.041C84.561,8.243,84.212,8.06,84.023,7.875L84.023,7.875z M81.77,12.148c-0.699,0.165-1.047-0.293-1.424-0.673c-0.938-0.935-1.57-2.093-2.298-3.244c-0.247-0.396-0.885-1.134-0.554-1.702h0.156c0.199,0.299,0.539,0.507,0.754,0.792c0.591,0.784,1.313,1.469,1.898,2.255c0.359,0.485,0.758,0.94,1.106,1.424c0.178,0.249,0.315,0.565,0.556,0.751C81.924,11.931,81.848,12.015,81.77,12.148L81.77,12.148z M82.361,9.339c0.32,0.439,0.755,0.688,0.751,1.463c-0.122,0.116-0.157,0.224-0.356,0.276c-0.039,0.032-0.011,0.015-0.078,0.041c-0.56-0.932-1.367-1.711-2.017-2.573c-0.212-0.282-0.541-0.511-0.752-0.791c-0.362-0.48-0.793-0.864-1.188-1.305c-0.113-0.131-0.168-0.257-0.313-0.357c0.033-0.086,0.031-0.057,0.076-0.118c0.672,0.006,0.994,0.458,1.386,0.753C80.837,7.453,81.648,8.354,82.361,9.339L82.361,9.339z"/><radialGradient id="SVGID_43_" cx="251.8086" cy="-408.3613" r="72.7509" gradientTransform="matrix(1 0 0 -1 -213.7637 -386.502)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#000" stop-opacity="0"/><stop offset=".8022" stop-color="#000" stop-opacity=".08"/><stop offset="1" stop-color="#000" stop-opacity=".3882"/></radialGradient><path style="&st15;" d="M49.885,17.037c0.014-0.606-0.392-1.27-0.392-1.27l-0.025-0.058c0,0-0.487-0.949-1.302-1.228c-0.815-0.278-1.478,0.342-1.478,0.342s-0.114,0.131-0.429,0.494c-0.313,0.364-0.507,0.666-1.198,0.938c-0.692,0.271-1.379,0.204-1.743,0.033c-0.364-0.172-0.457-0.537-0.457-0.537s-0.229-0.722-0.313-1.049c-0.086-0.331-0.309-1.694-0.309-1.694s-0.491-2.747-0.534-3.304c0,0,1.475-0.126,3.687-0.775c2.299-0.673,3.043-1.206,3.043-1.206s-0.432-0.156-0.484-0.662c-0.051-0.507-0.089-1.19-0.089-1.19s-0.089-0.5,0.483-1.139c0.571-0.64,1.354-0.863,1.762-0.953c0.41-0.089,1.281-0.17,2.093-0.134c0.812,0.038,1.267,0.112,1.593,0.291c0.328,0.178,0.357,0.61,0.357,0.61l-0.008,1.146c0,0-0.037,0.402,0.261,0.529c0,0,0.505,0.305,2.196,0.133c0,0,0.72-0.126,1.846-0.46c1.125-0.335,4.129-1.229,4.554-1.341c0.425-0.111,0.953-0.291,1.646-0.469c0.691-0.179,2.039-0.626,2.308-0.73c0.271-0.104,1.812-0.618,2.927-0.81c1.115-0.195,2.227-0.186,2.813,0.149c0,0,0.357,0.304,0.521,0.662c0.163,0.358,0.478,0.863,0.923,1.088c0.454,0.227,0.752,0.371,1.875,0.273c0,0,0.022-0.096-0.395-0.37c-0.417-0.277-0.991-0.701-0.991-0.701S74.29,3.4,74.215,3.198c-0.072-0.202-0.043-0.306-0.043-0.306l0.877-1.406c0,0,0-0.172,0.508-0.238c0.506-0.067,1.071-0.134,1.74-0.313c0.67-0.178,0.788-0.312,0.788-0.312l0.58,0.178c0,0,3.546,2.853,4.655,3.583l0.199-0.239c0,0,0.436,0.018,0.826,0.172c0.394,0.154,0.979,0.562,0.979,0.562s1.612,1.31,2.071,2.2l0.223,0.679l-0.102,0.161c0,0,0.918,1.307,2.096,2.602c0,0,1.227,1.664,1.689,2.09c0,0-0.108-0.399-0.201-0.849l0.336-0.226l0.203-0.144l0.617,0.259c3.573,4.811,6.432,10.424,8.141,16.328l-0.12,0.484l0.395,0.501c1.128,4.212,1.728,8.643,1.728,13.211c0,1.122-0.036,2.236-0.107,3.339l-0.304,0.511l0.225,0.555c-2.231,26.1-24.124,46.584-50.801,46.584c-18.502,0-34.702-9.854-43.637-24.6L7.674,68.2l-0.205-0.153c-3.387-5.742-5.682-12.205-6.595-19.103l0.212-0.525L0.75,47.936c-0.213-1.892-0.322-3.812-0.322-5.756c0-2.985,0.255-5.909,0.748-8.755l0.25-0.562l-0.087-0.328c1.157-6.048,3.383-11.716,6.474-16.799l0.684-0.384l0.081,0.032c0,0,0.233-0.169,0.354-0.217l0.076-0.023c0,0,1.179-1.971,1.625-2.601c0,0,0.542-0.348,0.745-0.407c0,0,0.124-0.016,0.189,0.076c0,0,0.496-0.432,1.699-2.054c0.004-0.005,0.007-0.011,0.012-0.017c0,0-0.114-0.076-0.131-0.174c-0.018-0.097,0.108-0.591,0.173-0.717c0.065-0.126,0.108-0.156,0.108-0.156s1.722-2.032,3.151-3.238c0,0,0.26-0.202,0.678-0.25c0,0,1.472-0.613,3.264-2.184c0,0,0.051-0.289,0.478-0.858c0.428-0.57,1.456-1.163,2.222-1.337c0.764-0.174,0.896-0.038,0.896-0.038l0.064,0.065l0.515,0.766c0,0,0.565-0.316,1.413-0.604c0.847-0.289,0.979-0.262,0.979-0.262l0.825,1.336l-0.987,2c0,0-0.644,1.421-1.655,2.185c0,0-0.472,0.284-1.12,0.127c-0.648-0.157-1.072,0.333-1.072,0.333l-0.17,0.14c0,0,0.14-0.024,0.346-0.103c0,0,0.158,0.065,0.274,0.223c0.114,0.158,0.913,1.175,0.913,1.175s0.005,0.837-0.415,1.938c-0.419,1.1-1.467,2.891-1.467,2.891s-0.733,1.424-1.075,2.253c-0.342,0.829-0.515,1.765-0.488,2.262c0,0,0.187,0.062,0.707-0.202c0.655-0.332,1.083,0.027,1.083,0.027s0.719,0.53,1.041,0.881c0.262,0.289,0.802,1.765,0.209,3.224c0,0-0.402,1.008-1.377,1.724c0,0-0.216,0.332-1.529,0.174c-0.368-0.043-0.585-0.276-1.372-0.2c-0.785,0.077-1.231,0.815-1.231,0.815l0.013-0.024c-0.692,0.999-1.154,2.458-1.154,2.458l-0.057,0.165c0,0-0.241,0.509-0.292,1.752c-0.053,1.284,0.284,3.109,0.284,3.109s7.876-1.387,9.88-0.055l0.58,0.532c0,0,0.046,0.174-0.031,0.376c-0.08,0.204-0.375,0.673-0.987,1.113c-0.611,0.438-1.222,1.583-0.313,2.304c1.034,0.818,1.691,0.766,3.43,0.468c1.74-0.297,2.898-1.269,2.898-1.269s0.972-0.72,0.783-1.628c-0.188-0.908-1.017-1.189-1.017-1.189s-0.658-0.423-0.141-1.238c0,0,0.141-0.689,2.553-1.316c2.414-0.626,6.812-1.52,10.556-1.989c0,0-2.539-8.223-0.737-9.289c0,0,0.438-0.296,1.224-0.408l0.721-0.037c0.131-0.027,0.344,0.005,0.796,0.045c0.452,0.038,1.001,0.076,1.678-0.441c0.676-0.519,0.697-0.819,0.697-0.819"/></svg>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/basic-rect.html b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/basic-rect.html
index e36d778..6cacec0 100644
--- a/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/basic-rect.html
+++ b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/basic-rect.html
@@ -1,10 +1,9 @@
 <!DOCTYPE html>
-<html class=reftest-wait>
+<html>
 <title>Canvas.drawElement: green rect</title>
 <link rel="help" href="https://github.com/WICG/html-in-canvas">
 <link rel="author" href="mailto:vmpstr@chromium.org">
 <link rel="match" href="basic-rect-ref.html">
-<script src="/common/reftest-wait.js"></script>
 <style>
 #child {
   width: 100px;
@@ -23,7 +22,6 @@
 <script>
 function runTest() {
   canvas.getContext("2d").drawElement(child, 20, 30);
-  requestAnimationFrame(takeScreenshot);
 }
 
 onload = () => runTest();
diff --git a/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-foreign-object.html b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-foreign-object.html
new file mode 100644
index 0000000..10f6073
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-foreign-object.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<title>Canvas.drawElement: SVG foreignObject green rect</title>
+<link rel="help" href="https://github.com/WICG/html-in-canvas">
+<link rel="author" href="mailto:schenney@chromium.org">
+<link rel="match" href="basic-rect-ref.html">
+<style>
+#canvas {
+  background: grey;
+}
+</style>
+
+<canvas id=canvas width="200" height="200" layoutsubtree=true>
+  <svg id=child width="200px" height="200px">
+    <foreignElement x="50" y="50" width="200" height="200">
+      <div style="width: 100px; height: 100px; background: green;"></div>
+    </foreignElement>
+  </svg>
+</canvas>
+
+<script>
+function runTest() {
+  canvas.getContext("2d").drawElement(child, 20, 30);
+}
+
+onload = () => runTest();
+
+</script>
+</html>
diff --git a/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-rect.html b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-rect.html
new file mode 100644
index 0000000..235e6ce
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/html/canvas/drawElement/svg-rect.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<title>Canvas.drawElement: SVG green rect</title>
+<link rel="help" href="https://github.com/WICG/html-in-canvas">
+<link rel="author" href="mailto:schenney@chromium.org">
+<link rel="match" href="basic-rect-ref.html">
+<style>
+#canvas {
+  background: grey;
+}
+</style>
+
+<canvas id=canvas width="200" height="200" layoutsubtree=true>
+  <svg id=child width="200px" height="200px">
+    <rect fill="green" x="0" y="0" width="100" height="100"/>
+  </svg>
+</canvas>
+
+<script>
+function runTest() {
+  canvas.getContext("2d").drawElement(child, 20, 30);
+}
+
+onload = () => runTest();
+
+</script>
+</html>
diff --git a/third_party/boringssl/src b/third_party/boringssl/src
index c5795a3..9295969 160000
--- a/third_party/boringssl/src
+++ b/third_party/boringssl/src
@@ -1 +1 @@
-Subproject commit c5795a328880eadb879088fc59cd0087edc8dc20
+Subproject commit 9295969e1dad2c31d0d99481734c1c68dcbc6403
diff --git a/third_party/compiler-rt/src b/third_party/compiler-rt/src
index a6f7c1a..689e2e2 160000
--- a/third_party/compiler-rt/src
+++ b/third_party/compiler-rt/src
@@ -1 +1 @@
-Subproject commit a6f7c1ae19c301452a66fdfeceef4d7c47d86107
+Subproject commit 689e2e2268b19ff47d6a7e3a0cedd6d5ac19d0a7
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src
index 137e867..c67d1c72 160000
--- a/third_party/devtools-frontend/src
+++ b/third_party/devtools-frontend/src
@@ -1 +1 @@
-Subproject commit 137e867406255293753ba0fa2f8cd95f80b01771
+Subproject commit c67d1c724ab9dcf466346f2e95b92bd0012982bc
diff --git a/third_party/lit/v3_0/BUILD.gn b/third_party/lit/v3_0/BUILD.gn
index 60378312..bf300e3 100644
--- a/third_party/lit/v3_0/BUILD.gn
+++ b/third_party/lit/v3_0/BUILD.gn
@@ -35,6 +35,7 @@
     "//chrome/browser/resources/discards:build_ts",
     "//chrome/browser/resources/downloads:build_ts",
     "//chrome/browser/resources/extensions:build_ts",
+    "//chrome/browser/resources/extensions_zero_state_promo:build_ts",
     "//chrome/browser/resources/family_link_user_internals:build_ts",
     "//chrome/browser/resources/feedback:build_ts",
     "//chrome/browser/resources/history:build_ts",
diff --git a/third_party/perfetto b/third_party/perfetto
index 82c60ea..dd35b29 160000
--- a/third_party/perfetto
+++ b/third_party/perfetto
@@ -1 +1 @@
-Subproject commit 82c60ea0d2b453aded71857c93b9e6a2637da79b
+Subproject commit dd35b295cd359ba094404218414955f961a0d6ae
diff --git a/third_party/rust/chromium_crates_io/Cargo.lock b/third_party/rust/chromium_crates_io/Cargo.lock
index 333b0a2..79df612 100644
--- a/third_party/rust/chromium_crates_io/Cargo.lock
+++ b/third_party/rust/chromium_crates_io/Cargo.lock
@@ -128,7 +128,7 @@
 
 [[package]]
 name = "clap"
-version = "4.5.37"
+version = "4.5.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "clap_builder",
@@ -136,7 +136,7 @@
 
 [[package]]
 name = "clap_builder"
-version = "4.5.37"
+version = "4.5.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "anstyle",
@@ -228,7 +228,7 @@
 
 [[package]]
 name = "derivre"
-version = "0.3.7"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "anyhow",
@@ -657,7 +657,7 @@
 
 [[package]]
 name = "llguidance"
-version = "0.7.19"
+version = "0.7.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "anyhow",
diff --git a/third_party/rust/chromium_crates_io/supply-chain/config.toml b/third_party/rust/chromium_crates_io/supply-chain/config.toml
index d5b880e..a5a7dff 100644
--- a/third_party/rust/chromium_crates_io/supply-chain/config.toml
+++ b/third_party/rust/chromium_crates_io/supply-chain/config.toml
@@ -80,10 +80,10 @@
 [policy."cfg-if:1.0.0"]
 criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"]
 
-[policy."clap:4.5.37"]
+[policy."clap:4.5.38"]
 criteria = ["crypto-safe", "safe-to-run"]
 
-[policy."clap_builder:4.5.37"]
+[policy."clap_builder:4.5.38"]
 criteria = ["crypto-safe", "safe-to-run"]
 
 [policy."clap_lex:0.7.4"]
@@ -113,7 +113,7 @@
 [policy."derive_arbitrary:1.4.1"]
 criteria = []
 
-[policy."derivre:0.3.7"]
+[policy."derivre:0.3.8"]
 criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"]
 
 [policy."diplomat-runtime:0.11.0"]
@@ -254,7 +254,7 @@
 [policy."litemap:0.8.0"]
 criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"]
 
-[policy."llguidance:0.7.19"]
+[policy."llguidance:0.7.21"]
 criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"]
 
 [policy."log:0.4.27"]
diff --git a/third_party/rust/chromium_crates_io/vendor/clap-v4/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/clap-v4/.cargo_vcs_info.json
index 5c2f1a3..e078b04 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap-v4/.cargo_vcs_info.json
+++ b/third_party/rust/chromium_crates_io/vendor/clap-v4/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "f209bce2203498e743b171b7ac64f0fb9d3ae590"
+    "sha1": "6b12a81bafe7b9d013b06981f520ab4c70da5510"
   },
   "path_in_vcs": ""
 }
\ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.lock
index e25d08e..a8d844c 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.lock
+++ b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.lock
@@ -134,7 +134,7 @@
 
 [[package]]
 name = "clap"
-version = "4.5.37"
+version = "4.5.38"
 dependencies = [
  "automod",
  "clap-cargo",
@@ -159,9 +159,9 @@
 
 [[package]]
 name = "clap_builder"
-version = "4.5.37"
+version = "4.5.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2"
+checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120"
 dependencies = [
  "anstream",
  "anstyle",
@@ -331,9 +331,9 @@
 
 [[package]]
 name = "jiff"
-version = "0.2.6"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f33145a5cbea837164362c7bd596106eb7c5198f97d1ba6f6ebb3223952e488"
+checksum = "27e77966151130221b079bcec80f1f34a9e414fa489d99152a201c07fd2182bc"
 dependencies = [
  "jiff-static",
  "jiff-tzdb-platform",
@@ -341,14 +341,14 @@
  "portable-atomic",
  "portable-atomic-util",
  "serde",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "jiff-static"
-version = "0.2.6"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43ce13c40ec6956157a3635d97a1ee2df323b263f09ea14165131289cb0f5c19"
+checksum = "97265751f8a9a4228476f2fc17874a9e7e70e96b893368e42619880fe143b48a"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml
index 293c0ab..683bfde 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml
+++ b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml
@@ -13,7 +13,7 @@
 edition = "2021"
 rust-version = "1.74"
 name = "clap"
-version = "4.5.37"
+version = "4.5.38"
 build = false
 include = [
     "build.rs",
@@ -510,7 +510,7 @@
 required-features = ["derive"]
 
 [dependencies.clap_builder]
-version = "=4.5.37"
+version = "=4.5.38"
 default-features = false
 
 [dependencies.clap_derive]
diff --git a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml.orig
index d55d95f9..e3c58a8 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml.orig
+++ b/third_party/rust/chromium_crates_io/vendor/clap-v4/Cargo.toml.orig
@@ -99,7 +99,7 @@
 
 [package]
 name = "clap"
-version = "4.5.37"
+version = "4.5.38"
 description = "A simple to use, efficient, and full-featured Command Line Argument Parser"
 categories = ["command-line-interface"]
 keywords = [
@@ -176,7 +176,7 @@
 bench = false
 
 [dependencies]
-clap_builder = { path = "./clap_builder", version = "=4.5.37", default-features = false }
+clap_builder = { path = "./clap_builder", version = "=4.5.38", default-features = false }
 clap_derive = { path = "./clap_derive", version = "=4.5.32", optional = true }
 
 [dev-dependencies]
diff --git a/third_party/rust/chromium_crates_io/vendor/clap-v4/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/clap-v4/src/lib.rs
index fa4603c..fe66d61b 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap-v4/src/lib.rs
+++ b/third_party/rust/chromium_crates_io/vendor/clap-v4/src/lib.rs
@@ -7,11 +7,11 @@
 //!
 //! Quick Links:
 //! - Derive [tutorial][_derive::_tutorial] and [reference][_derive]
-//! - Builder [tutorial][_tutorial] and [reference](index.html)
+//! - Builder [tutorial][_tutorial] and [reference][Command]
 //! - [Cookbook][_cookbook]
 //! - [FAQ][_faq]
 //! - [Discussions](https://github.com/clap-rs/clap/discussions)
-//! - [CHANGELOG](https://github.com/clap-rs/clap/blob/v4.5.37/CHANGELOG.md) (includes major version migration
+//! - [CHANGELOG](https://github.com/clap-rs/clap/blob/v4.5.38/CHANGELOG.md) (includes major version migration
 //!   guides)
 //!
 //! ## Aspirations
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/.cargo_vcs_info.json
index ad9432a..b9baf347 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/.cargo_vcs_info.json
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "f209bce2203498e743b171b7ac64f0fb9d3ae590"
+    "sha1": "6b12a81bafe7b9d013b06981f520ab4c70da5510"
   },
   "path_in_vcs": "clap_builder"
 }
\ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.lock
index a668c8d9..2a74c74 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.lock
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.lock
@@ -101,7 +101,7 @@
 
 [[package]]
 name = "clap_builder"
-version = "4.5.37"
+version = "4.5.38"
 dependencies = [
  "anstream",
  "anstyle",
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml
index b0be359..2a06164a 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml
@@ -13,7 +13,7 @@
 edition = "2021"
 rust-version = "1.74"
 name = "clap_builder"
-version = "4.5.37"
+version = "4.5.38"
 build = false
 include = [
     "build.rs",
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml.orig
index 30a10c33..1277d71 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml.orig
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "clap_builder"
-version = "4.5.37"
+version = "4.5.38"
 description = "A simple to use, efficient, and full-featured Command Line Argument Parser"
 categories = ["command-line-interface"]
 keywords = [
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/builder/action.rs b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/builder/action.rs
index 0d2ca7b..37214f20 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/builder/action.rs
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/builder/action.rs
@@ -341,11 +341,11 @@
     ///             .action(clap::ArgAction::Version)
     ///     );
     ///
-    /// // Existing help still exists
+    /// // Existing version still exists
     /// let err = cmd.clone().try_get_matches_from(["mycmd", "--version"]).unwrap_err();
     /// assert_eq!(err.kind(), clap::error::ErrorKind::DisplayVersion);
     ///
-    /// // New help available
+    /// // New version available
     /// let err = cmd.try_get_matches_from(["mycmd", "--special-version"]).unwrap_err();
     /// assert_eq!(err.kind(), clap::error::ErrorKind::DisplayVersion);
     /// ```
diff --git a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/output/help_template.rs b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/output/help_template.rs
index 98d9aad9..801fcbf 100644
--- a/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/output/help_template.rs
+++ b/third_party/rust/chromium_crates_io/vendor/clap_builder-v4/src/output/help_template.rs
@@ -789,7 +789,7 @@
             .aliases
             .iter()
             .filter(|&als| als.1) // visible
-            .map(|als| als.0.as_str()) // name
+            .map(|als| format!("--{}", als.0)) // name
             .collect::<Vec<_>>()
             .join(", ");
         if !als.is_empty() {
@@ -801,7 +801,7 @@
             .short_aliases
             .iter()
             .filter(|&als| als.1) // visible
-            .map(|&als| als.0.to_string()) // name
+            .map(|&als| format!("-{}", als.0)) // name
             .collect::<Vec<_>>()
             .join(", ");
         if !als.is_empty() {
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.cargo_vcs_info.json
index c3fab1a..c233376 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.cargo_vcs_info.json
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "97bc7eb6e6f449423f67c98b2caf7afb638c9b39"
+    "sha1": "c68f60791d191a05131796771f38c2e904417074"
   },
   "path_in_vcs": ""
 }
\ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.github/workflows/rust.yml b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.github/workflows/rust.yml
index 536b4d56..07d6f15f 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.github/workflows/rust.yml
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/.github/workflows/rust.yml
@@ -13,9 +13,7 @@
 
 jobs:
   build:
-
     runs-on: ubuntu-latest
-
     steps:
     - uses: actions/checkout@v4
     - run: cargo fmt --check
@@ -25,6 +23,19 @@
     - name: Run tests
       run: cargo test --verbose
 
+  msrv:
+    name: MSRV Check
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v4
+    - name: Set up Rust
+      uses: dtolnay/rust-toolchain@1.80.0
+      with:
+        components: clippy
+    - run: cargo build --verbose --locked
+    - run: cargo test --verbose --locked
+    - run: cargo clippy --all-targets --all-features -- -D warnings
+
   crates:
     name: Upload to crates.io
     runs-on: ubuntu-latest
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.lock
index 8306e57c..6387a12 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.lock
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.lock
@@ -56,7 +56,7 @@
 
 [[package]]
 name = "derivre"
-version = "0.3.7"
+version = "0.3.8"
 dependencies = [
  "ahash",
  "anyhow",
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml
index 4cce52c7..75f6987 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml
@@ -11,8 +11,9 @@
 
 [package]
 edition = "2021"
+rust-version = "1.80.0"
 name = "derivre"
-version = "0.3.7"
+version = "0.3.8"
 authors = ["Michal Moskal <michal@moskal.me>"]
 build = false
 exclude = ["scripts/*"]
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml.orig
index 2f08783b..f48c751 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml.orig
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/Cargo.toml.orig
@@ -1,12 +1,13 @@
 [package]
 name = "derivre"
-version = "0.3.7"
+version = "0.3.8"
 edition = "2021"
 authors = ["Michal Moskal <michal@moskal.me>"]
 license = "MIT"
 description = "A derivative-based regular expression engine"
 repository = "https://github.com/microsoft/derivre"
 exclude = ["scripts/*"]
+rust-version = "1.80.0"
 
 [lib]
 name = "derivre"
diff --git a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/src/syntax.rs b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/src/syntax.rs
index a36fadc..17588a9 100644
--- a/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/src/syntax.rs
+++ b/third_party/rust/chromium_crates_io/vendor/derivre-v0_3/src/syntax.rs
@@ -118,7 +118,7 @@
 
         if !self.any_unicode.is_valid()
             && ranges.len() == 1
-            && ranges[0].start() == char::MIN
+            && ranges[0].start() == '\0'
             && ranges[0].end() == char::MAX
         {
             self.any_unicode = r;
@@ -126,7 +126,7 @@
 
         if !self.any_unicode_non_nl.is_valid()
             && ranges.len() == 2
-            && ranges[0].start() == char::MIN
+            && ranges[0].start() == '\0'
             && ranges[0].end() == (b'\n' - 1) as char
             && ranges[1].start() == (b'\n' + 1) as char
             && ranges[1].end() == char::MAX
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/.cargo_vcs_info.json
index b0f9ab2a..ae47b38 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/.cargo_vcs_info.json
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "22a09129eaa895ea2a746023a05834fcda597f4d",
+    "sha1": "5f43908e1cbebdb713a83f309e807f37fc1b4ed4",
     "dirty": true
   },
   "path_in_vcs": "parser"
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.lock
index 9714b1e..aa8cd95f 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.lock
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.lock
@@ -126,9 +126,9 @@
 
 [[package]]
 name = "derivre"
-version = "0.3.7"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a605f30e6a1460a323cc4de7bc62dea81df1d9d67eb92194d3a983a8a9601c4"
+checksum = "786c7c65c4ef0c7deb05de3005e01991612a8f09fe0844fc0969c68b90468ba8"
 dependencies = [
  "ahash",
  "anyhow",
@@ -434,7 +434,7 @@
 
 [[package]]
 name = "llguidance"
-version = "0.7.19"
+version = "0.7.21"
 dependencies = [
  "anyhow",
  "derivre",
@@ -816,9 +816,9 @@
 
 [[package]]
 name = "toktrie"
-version = "0.7.19"
+version = "0.7.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69200397314cd578aa0623a5161342c44877ac2ebcea1e9d20e2f65120e81e8d"
+checksum = "279e477cd582ba1b60765c07e34fea21eefd32f1862c223ff434f6c52498df1e"
 dependencies = [
  "anyhow",
  "bytemuck",
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml
index 39a65ed..95fe81b 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml
@@ -12,7 +12,7 @@
 [package]
 edition = "2021"
 name = "llguidance"
-version = "0.7.19"
+version = "0.7.21"
 build = "build.rs"
 autolib = false
 autobins = false
@@ -55,7 +55,7 @@
 version = "1.0.95"
 
 [dependencies.derivre]
-version = "=0.3.7"
+version = "=0.3.8"
 features = ["compress"]
 default-features = false
 
@@ -95,7 +95,7 @@
 features = ["preserve_order"]
 
 [dependencies.toktrie]
-version = "0.7.19"
+version = "0.7.21"
 
 [dev-dependencies.regex]
 version = "1.11.1"
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml.orig
index 13883167..839a8bc10 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml.orig
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/Cargo.toml.orig
@@ -1,14 +1,14 @@
 [package]
 name = "llguidance"
-version = "0.7.19"
+version = "0.7.21"
 edition = "2021"
 license = "MIT"
 description = "Super-fast Structured Outputs"
 repository = "https://github.com/guidance-ai/llguidance"
 
 [dependencies]
-toktrie = { version = "0.7.19" }
-derivre = { version = "=0.3.7", default-features = false, features = ["compress"] }
+toktrie = { version = "0.7.21" }
+derivre = { version = "=0.3.8", default-features = false, features = ["compress"] }
 serde = { version = "1.0.217", features = ["derive"] }
 serde_json = { version = "1.0.138", features = ["preserve_order"] }
 anyhow = "1.0.95"
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/build.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/build.rs
index ae7b955c0b..ec62ff1 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/build.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/build.rs
@@ -5,7 +5,7 @@
 
     let required_vars = [
         "CARGO",
-        "CARGO_MANIFEST_PATH",
+        // "CARGO_MANIFEST_PATH",
         "CARGO_PKG_NAME",
         "CARGO_PKG_VERSION",
         "OUT_DIR",
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/llguidance.h b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/llguidance.h
index 06c2d0f..efd0167e 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/llguidance.h
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/llguidance.h
@@ -494,7 +494,7 @@
 const uint32_t *llg_matcher_get_mask(struct LlgMatcher *matcher);
 
 /**
- * Return pointer to the mask computed by llg_matcher_compute_mask(), if any.
+ * Return the size of the mask in bytes.
  */
 size_t llg_matcher_get_mask_byte_size(struct LlgMatcher *matcher);
 
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/constraint.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/constraint.rs
index 9b5d045e..8bdf2ef 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/constraint.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/constraint.rs
@@ -137,7 +137,7 @@
     /// The splice is never returned when ff_tokens are disabled in InferenceCapabilities.
     /// After this returns, commit_token() must be called with the sampled token if any.
     pub fn compute_mask(&mut self) -> Result<&StepResult> {
-        panic_utils::catch_unwind(std::panic::AssertUnwindSafe(|| self.compute_mask_inner()))
+        self.catch_unwind(|s| s.compute_mask_inner())
             .map(|_| &self.last_res)
     }
 
@@ -185,6 +185,14 @@
         self.parser.validate_tokens_raw(tokens)
     }
 
+    fn catch_unwind<F, R>(&mut self, f: F) -> Result<R>
+    where
+        F: FnOnce(&mut Self) -> Result<R>,
+    {
+        panic_utils::catch_unwind(std::panic::AssertUnwindSafe(|| f(self)))
+            .map_err(|e| anyhow::anyhow!(self.parser.augment_err(e)))
+    }
+
     /// commit_token() is a top-level method in this file and is called by
     /// the LLInterpreter::commit_token().
     ///
@@ -194,9 +202,7 @@
     /// It only returns 'STOP' if previous compute_mask() already returned 'STOP'
     /// (in which case there's little point calling commit_token()).
     pub fn commit_token(&mut self, sampled_token: Option<TokenId>) -> Result<CommitResult> {
-        panic_utils::catch_unwind(std::panic::AssertUnwindSafe(|| {
-            self.commit_token_inner(sampled_token)
-        }))
+        self.catch_unwind(|s| s.commit_token_inner(sampled_token))
     }
 
     fn commit_token_inner(&mut self, sampled_token: Option<TokenId>) -> Result<CommitResult> {
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/ffi.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/ffi.rs
index d48c438..7bd5350 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/ffi.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/ffi.rs
@@ -554,9 +554,12 @@
 /// Check if constraint is stopped (cannot be extended further).
 #[no_mangle]
 pub extern "C" fn llg_is_stopped(cc: &LlgConstraint) -> bool {
-    cc.constraint
-        .as_ref()
-        .is_none_or(|c| c.step_result().is_stop())
+    if let Some(c) = &cc.constraint {
+        c.step_result().is_stop()
+    } else {
+        // if there is no constraint, we consider it stopped
+        true
+    }
 }
 
 /// Compute mask for the next token sampling
@@ -1102,7 +1105,7 @@
         .map_or(std::ptr::null(), |m| m.as_ptr())
 }
 
-/// Return pointer to the mask computed by llg_matcher_compute_mask(), if any.
+/// Return the size of the mask in bytes.
 #[no_mangle]
 pub extern "C" fn llg_matcher_get_mask_byte_size(matcher: &mut LlgMatcher) -> usize {
     matcher.mask_elts() * 4
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/json/formats.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/json/formats.rs
index 05812a15..880581b 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/json/formats.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/json/formats.rs
@@ -27,9 +27,15 @@
         "duration" => {
             r"P(?:(?P<dur_date>(?:(?P<dur_year>[0-9]+Y(?:[0-9]+M(?:[0-9]+D)?)?)|(?P<dur_month>[0-9]+M(?:[0-9]+D)?)|(?P<dur_day>[0-9]+D))(?:T(?:(?P<dur_hour>[0-9]+H(?:[0-9]+M(?:[0-9]+S)?)?)|(?P<dur_minute>[0-9]+M(?:[0-9]+S)?)|(?P<dur_second>[0-9]+S)))?)|(?P<dur_time>T(?:(?P<dur_hour2>[0-9]+H(?:[0-9]+M(?:[0-9]+S)?)?)|(?P<dur_minute2>[0-9]+M(?:[0-9]+S)?)|(?P<dur_second2>[0-9]+S)))|(?P<dur_week>[0-9]+W))"
         }
-        "email" => {
-            r"(?P<local_part>(?P<dot_string>[^\s@\.]+(\.[^\s@\.]+)*))@((?P<domain>(?P<sub_domain>[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)(\.(?P<sub_domain2>[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?))*)|\[(?P<ipv4>((([0-9])|(([1-9])[0-9]|(25[0-5]|(2[0-4]|(1)[0-9])[0-9])))\.){3}(([0-9])|(([1-9])[0-9]|(25[0-5]|(2[0-4]|(1)[0-9])[0-9]))))\])"
-        }
+        // https://www.rfc-editor.org/rfc/inline-errata/rfc5321.html 4.1.2 -> Mailbox
+        "email" => concat!(
+            r"(?P<local_part>(?P<dot_string>[a-zA-Z0-9!#$%&'*+\-/=?\^_`{|}~]+(\.[a-zA-Z0-9!#$%&'*+\-/=?\^_`{|}~]+)*))",
+            r"@(",
+            r"(?P<domain>(?P<sub_domain>[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)(\.(?P<sub_domain2>[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?))*)",
+            r"|",
+            r"\[(?P<ipv4>((([0-9])|(([1-9])[0-9]|(25[0-5]|(2[0-4]|(1)[0-9])[0-9])))\.){3}(([0-9])|(([1-9])[0-9]|(25[0-5]|(2[0-4]|(1)[0-9])[0-9]))))\]",
+            r")"
+        ),
         "hostname" => {
             r"[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*"
         }
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/matcher.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/matcher.rs
index d5439d5..38df990 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/matcher.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/matcher.rs
@@ -1,4 +1,4 @@
-use anyhow::{anyhow, ensure, Result};
+use anyhow::{anyhow, bail, ensure, Result};
 use toktrie::{SimpleVob, TokEnv, TokenId};
 
 use crate::{api::StopReason, earley::ParserStats, panic_utils, TokenParser};
@@ -48,8 +48,9 @@
                 match r {
                     Ok(r) => Ok(r),
                     Err(e) => {
-                        self.0 = MatcherState::Error(e.to_string());
-                        Err(e)
+                        let msg = inner.parser.augment_err(e);
+                        self.0 = MatcherState::Error(msg.clone());
+                        bail!(msg);
                     }
                 }
             }
diff --git a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/tokenparser.rs b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/tokenparser.rs
index 1e97e74a..0ef203b 100644
--- a/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/tokenparser.rs
+++ b/third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/src/tokenparser.rs
@@ -1,4 +1,4 @@
-use std::{hint::black_box, panic::AssertUnwindSafe, sync::Arc, time::Duration};
+use std::{fmt::Display, hint::black_box, panic::AssertUnwindSafe, sync::Arc, time::Duration};
 
 use crate::{
     api::{GrammarInit, ParserLimits, StopReason},
@@ -22,6 +22,9 @@
     max_step_stats: ParserStats,
     eos_token: TokenId,
 
+    had_rollback: bool,
+    had_backtrack: bool,
+
     is_accepting_cache: Option<bool>,
     ff_tokens_cache: Option<(Vec<TokenId>, Vec<u8>)>,
     stop_reason: StopReason,
@@ -110,6 +113,8 @@
             max_tokens_total: max_tokens,
             last_bias_time: Duration::from_secs(0),
             is_fresh: true,
+            had_backtrack: false,
+            had_rollback: false,
         })
     }
 
@@ -268,6 +273,34 @@
         res_prompt
     }
 
+    pub fn augment_err(&self, e: impl Display) -> String {
+        format!("{e}\n<state>\n{}\n</state>", self.dump_state())
+    }
+
+    pub fn dump_state(&self) -> String {
+        format!(
+            "Tokens: {}\n{} tokens, {} bytes; grm_prefix: {:?}\nFlags:{}{}\nLexer: {}\nParser: {}\nStop: {}\nError: {}",
+            self.tok_trie().tokens_dbg(&self.llm_tokens),
+            self.llm_tokens.len(),
+            self.llm_bytes.len(),
+            String::from_utf8_lossy(&self.grm_prefix),
+            if self.had_backtrack {
+                " had_backtrack"
+            } else {
+                ""
+            },
+            if self.had_rollback {
+                " had_rollback"
+            } else {
+                ""
+            },
+            self.parser.lexer_stats(),
+            self.parser.stats(),
+            self.stop_reason,
+            self.error_message.as_deref().unwrap_or("None"),
+        )
+    }
+
     fn clear_caches(&mut self) {
         self.is_accepting_cache = None;
         self.ff_tokens_cache = None;
@@ -332,6 +365,8 @@
         // this will fail in case we're in error state or not initialized
         self.check_initialized("rollback")?;
 
+        self.had_rollback = true;
+
         let new_len = self.llm_tokens.len() - n_tokens;
         let mut bytes_to_drop = 0;
         for tok in &self.llm_tokens[new_len..] {
@@ -522,6 +557,7 @@
                 self.llm_bytes.extend_from_slice(tok_bytes);
 
                 if backtrack_bytes0 != 0 {
+                    self.had_backtrack = true;
                     let mut backtrack_bytes: isize = backtrack_bytes0.try_into().unwrap();
                     let mut backtrack_tokens = 0;
                     while backtrack_bytes > 0 {
diff --git a/third_party/rust/clap/v4/BUILD.gn b/third_party/rust/clap/v4/BUILD.gn
index f8ebeae..d1d84fd 100644
--- a/third_party/rust/clap/v4/BUILD.gn
+++ b/third_party/rust/clap/v4/BUILD.gn
@@ -153,7 +153,7 @@
   edition = "2021"
   cargo_pkg_name = "clap"
   cargo_pkg_description = "A simple to use, efficient, and full-featured Command Line Argument Parser"
-  cargo_pkg_version = "4.5.37"
+  cargo_pkg_version = "4.5.38"
 
   allow_unsafe = false
 
diff --git a/third_party/rust/clap/v4/README.chromium b/third_party/rust/clap/v4/README.chromium
index a46fa31..eee755a 100644
--- a/third_party/rust/clap/v4/README.chromium
+++ b/third_party/rust/clap/v4/README.chromium
@@ -1,7 +1,7 @@
 Name: clap
 URL: https://crates.io/crates/clap
-Version: 4.5.37
-Revision: f209bce2203498e743b171b7ac64f0fb9d3ae590
+Version: 4.5.38
+Revision: 6b12a81bafe7b9d013b06981f520ab4c70da5510
 License: Apache-2.0
 License File: //third_party/rust/chromium_crates_io/vendor/clap-v4/LICENSE-APACHE
 Shipped: no
diff --git a/third_party/rust/clap_builder/v4/BUILD.gn b/third_party/rust/clap_builder/v4/BUILD.gn
index a6c659e..aa0eb54 100644
--- a/third_party/rust/clap_builder/v4/BUILD.gn
+++ b/third_party/rust/clap_builder/v4/BUILD.gn
@@ -78,7 +78,7 @@
   edition = "2021"
   cargo_pkg_name = "clap_builder"
   cargo_pkg_description = "A simple to use, efficient, and full-featured Command Line Argument Parser"
-  cargo_pkg_version = "4.5.37"
+  cargo_pkg_version = "4.5.38"
 
   allow_unsafe = false
 
diff --git a/third_party/rust/clap_builder/v4/README.chromium b/third_party/rust/clap_builder/v4/README.chromium
index 4dce490..c83abb5 100644
--- a/third_party/rust/clap_builder/v4/README.chromium
+++ b/third_party/rust/clap_builder/v4/README.chromium
@@ -1,7 +1,7 @@
 Name: clap_builder
 URL: https://crates.io/crates/clap_builder
-Version: 4.5.37
-Revision: f209bce2203498e743b171b7ac64f0fb9d3ae590
+Version: 4.5.38
+Revision: 6b12a81bafe7b9d013b06981f520ab4c70da5510
 License: Apache-2.0
 License File: //third_party/rust/chromium_crates_io/vendor/clap_builder-v4/LICENSE-APACHE
 Shipped: no
diff --git a/third_party/rust/derivre/v0_3/BUILD.gn b/third_party/rust/derivre/v0_3/BUILD.gn
index 6a827e0..87a7060 100644
--- a/third_party/rust/derivre/v0_3/BUILD.gn
+++ b/third_party/rust/derivre/v0_3/BUILD.gn
@@ -37,7 +37,7 @@
   cargo_pkg_authors = "Michal Moskal <michal@moskal.me>"
   cargo_pkg_name = "derivre"
   cargo_pkg_description = "A derivative-based regular expression engine"
-  cargo_pkg_version = "0.3.7"
+  cargo_pkg_version = "0.3.8"
 
   allow_unsafe = false
 
diff --git a/third_party/rust/derivre/v0_3/README.chromium b/third_party/rust/derivre/v0_3/README.chromium
index d8ec73f..9b3cb22 100644
--- a/third_party/rust/derivre/v0_3/README.chromium
+++ b/third_party/rust/derivre/v0_3/README.chromium
@@ -1,7 +1,7 @@
 Name: derivre
 URL: https://crates.io/crates/derivre
-Version: 0.3.7
-Revision: 97bc7eb6e6f449423f67c98b2caf7afb638c9b39
+Version: 0.3.8
+Revision: c68f60791d191a05131796771f38c2e904417074
 License: MIT
 License File: //third_party/rust/chromium_crates_io/vendor/derivre-v0_3/LICENSE
 Shipped: yes
diff --git a/third_party/rust/llguidance/v0_7/BUILD.gn b/third_party/rust/llguidance/v0_7/BUILD.gn
index 6ffb278..d0ee53b 100644
--- a/third_party/rust/llguidance/v0_7/BUILD.gn
+++ b/third_party/rust/llguidance/v0_7/BUILD.gn
@@ -67,7 +67,7 @@
   edition = "2021"
   cargo_pkg_name = "llguidance"
   cargo_pkg_description = "Super-fast Structured Outputs"
-  cargo_pkg_version = "0.7.19"
+  cargo_pkg_version = "0.7.21"
 
   allow_unsafe = true
 
diff --git a/third_party/rust/llguidance/v0_7/README.chromium b/third_party/rust/llguidance/v0_7/README.chromium
index c121f8b..5bad587 100644
--- a/third_party/rust/llguidance/v0_7/README.chromium
+++ b/third_party/rust/llguidance/v0_7/README.chromium
@@ -1,7 +1,7 @@
 Name: llguidance
 URL: https://crates.io/crates/llguidance
-Version: 0.7.19
-Revision: 22a09129eaa895ea2a746023a05834fcda597f4d
+Version: 0.7.21
+Revision: 5f43908e1cbebdb713a83f309e807f37fc1b4ed4
 License: MIT
 License File: //third_party/rust/chromium_crates_io/vendor/llguidance-v0_7/LICENSE
 Shipped: yes
diff --git a/third_party/skia b/third_party/skia
index 956fd8b..f42bb59 160000
--- a/third_party/skia
+++ b/third_party/skia
@@ -1 +1 @@
-Subproject commit 956fd8b14e2205fa33f36de216e6231314e67d03
+Subproject commit f42bb59753feff1eb831991ad29075150bbec626
diff --git a/third_party/webrtc b/third_party/webrtc
index 5099aef..447950d 160000
--- a/third_party/webrtc
+++ b/third_party/webrtc
@@ -1 +1 @@
-Subproject commit 5099aef700c439ca6091e33333664fd7fc725a04
+Subproject commit 447950dc42025d50e9789a022bbed3a0c8a74be0
diff --git a/third_party/wpt_tools/README.chromium b/third_party/wpt_tools/README.chromium
index 53cc85c..1644ed94 100644
--- a/third_party/wpt_tools/README.chromium
+++ b/third_party/wpt_tools/README.chromium
@@ -2,7 +2,7 @@
 Short Name: wpt
 URL: https://github.com/web-platform-tests/wpt/
 Version: N/A
-Revision: c518eee7a46a7f77a9721270c2b5d6af4cecdc03
+Revision: 307dcacd9bccd9e66e062f3675c56e49efeca81d
 License: BSD-3-Clause
 Security Critical: no
 Shipped: no
diff --git a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/modules/browser.py b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/modules/browser.py
index 7b34fcc9..da39c3b 100644
--- a/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/modules/browser.py
+++ b/third_party/wpt_tools/wpt/tools/webdriver/webdriver/bidi/modules/browser.py
@@ -1,4 +1,4 @@
-from typing import Any, Mapping, MutableMapping
+from typing import Any, Mapping, MutableMapping, Optional
 
 from ._module import BidiModule, command
 
@@ -27,8 +27,19 @@
         return result["clientWindows"]
 
     @command
-    def create_user_context(self) -> Mapping[str, Any]:
-        return {}
+    def create_user_context(
+        self, accept_insecure_certs: Optional[bool] = None,
+        proxy: Optional[Mapping[str, Any]] = None
+    ) -> Mapping[str, Any]:
+        params: MutableMapping[str, Any] = {}
+
+        if accept_insecure_certs is not None:
+            params["acceptInsecureCerts"] = accept_insecure_certs
+
+        if proxy is not None:
+            params["proxy"] = proxy
+
+        return params
 
     @create_user_context.result
     def _create_user_context(self, result: Mapping[str, Any]) -> Any:
diff --git a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/executormarionette.py b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/executormarionette.py
index 08bc02cb..93b26a73 100644
--- a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -47,6 +47,7 @@
                        DevicePostureProtocolPart,
                        VirtualPressureSourceProtocolPart,
                        DisplayFeaturesProtocolPart,
+                       WebExtensionsProtocolPart,
                        merge_dicts)
 
 
@@ -738,6 +739,24 @@
     def clear_display_features(self):
         raise NotImplementedError("clear_display_features not yet implemented")
 
+
+class MarionetteWebExtensionsProtocolPart(WebExtensionsProtocolPart):
+    def setup(self):
+        self.addons = Addons(self.parent.marionette)
+
+    def install_web_extension(self, extension):
+        if extension["type"] == "base64":
+            extension_id = self.addons.install(data=extension["value"], temp=True)
+        else:
+            path = self.parent.test_dir + extension["path"]
+            extension_id = self.addons.install(path, temp=True)
+
+        return {'extension': extension_id}
+
+    def uninstall_web_extension(self, extension_id):
+        return self.addons.uninstall(extension_id)
+
+
 class MarionetteProtocol(Protocol):
     implements = [MarionetteBaseProtocolPart,
                   MarionetteTestharnessProtocolPart,
@@ -761,7 +780,8 @@
                   MarionetteVirtualSensorProtocolPart,
                   MarionetteDevicePostureProtocolPart,
                   MarionetteVirtualPressureSourceProtocolPart,
-                  MarionetteDisplayFeaturesProtocolPart]
+                  MarionetteDisplayFeaturesProtocolPart,
+                  MarionetteWebExtensionsProtocolPart]
 
     def __init__(self, executor, browser, capabilities=None, timeout_multiplier=1, e10s=True, ccov=False):
         do_delayed_imports()
@@ -955,6 +975,10 @@
             self.protocol.testharness.load_runner(new_environment["protocol"])
 
     def do_test(self, test):
+        # TODO: followup to do this properly, pass test as state on the CallbackHandler:
+        # https://phabricator.services.mozilla.com/D244400?id=1030480#inline-1369921
+        self.protocol.test_dir = os.path.dirname(test.path)
+
         timeout = (test.timeout * self.timeout_multiplier if self.debug_info is None
                    else None)
 
diff --git a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/protocol.py b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/protocol.py
index 6b9a0de9..af32f48 100644
--- a/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/protocol.py
+++ b/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/executors/protocol.py
@@ -335,6 +335,21 @@
         pass
 
 
+class WebExtensionsProtocolPart(ProtocolPart):
+    """Protocol part for managing WebExtensions"""
+    __metaclass__ = ABCMeta
+
+    name = "web_extensions"
+
+    @abstractmethod
+    def install_web_extension(self, extension):
+        pass
+
+    @abstractmethod
+    def uninstall_web_extension(self, extension_id):
+        pass
+
+
 class BidiBluetoothProtocolPart(ProtocolPart):
     """Protocol part for managing BiDi events"""
     __metaclass__ = ABCMeta
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
index 6ecf2dd..2f4ab49 100644
--- a/tools/gritsettings/resource_ids.spec
+++ b/tools/gritsettings/resource_ids.spec
@@ -408,6 +408,10 @@
     "META": {"sizes": {"includes": [120],}},
     "includes": [3920],
   },
+  "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/extensions_zero_state_promo/resources.grd": {
+    "META": {"sizes": {"includes": [8],}},
+    "includes": [3925],
+  },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/family_link_user_internals/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
     "includes": [3930],
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 2b3b68875..a0140a1 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -250,16 +250,6 @@
   <int value="9" label="Rejected Due to Decoder Shutdown"/>
 </enum>
 
-<enum name="AdsHeuristicCookieOverride">
-  <int value="0" label="kNone"/>
-  <int value="1" label="kNotAd"/>
-  <int value="2" label="kAny"/>
-  <int value="3" label="kSkipHeuristics"/>
-  <int value="4" label="kSkipMetadata"/>
-  <int value="5" label="kSkipSupport"/>
-  <int value="6" label="kSkipTopLevelSupport"/>
-</enum>
-
 <enum name="AdsInterventionStatus">
   <int value="0" label="Expired"/>
   <int value="1" label="Would Block"/>
@@ -273,12 +263,6 @@
   <int value="3" label="kOverlayPopupAd"/>
 </enum>
 
-<enum name="AggregationServiceObserverReportStatus">
-  <int value="0" label="Sent"/>
-  <int value="1" label="Failed to assemble"/>
-  <int value="2" label="Failed to send"/>
-</enum>
-
 <enum name="AllowedUsersPoliciesInvalidState">
   <summary>
     For recording which of the 4 disallowed combinations of allow_new_users and
@@ -342,16 +326,6 @@
   <int value="2" label="Missing Version"/>
 </enum>
 
-<enum name="AntiFingerprintingBlockListResult">
-  <summary>
-    The possible results from checking a network resource URL against the
-    anti-fingerprinting blocklist.
-  </summary>
-  <int value="0" label="Third-party resource Blocked"/>
-  <int value="1" label="Third-party resource Allowed"/>
-  <int value="2" label="First-party resource Allowed"/>
-</enum>
-
 <enum name="AppBoundEncryptionSupportLevel">
   <int value="0" label="Supported"/>
   <int value="1" label="Not supported as not running system-level"/>
@@ -2031,25 +2005,6 @@
   <int value="107" label="Person with megaphone"/>
 </enum>
 
-<enum name="ClearOnExitSyncEvent">
-  <int value="0" label="Profile startup, sync is disabled"/>
-  <int value="1" label="Profile startup, sync is paused"/>
-  <int value="2" label="Profile startup, sync is active"/>
-  <int value="3" label="Re-login to a sync paused account"/>
-  <int value="4" label="Logout of a sync paused account"/>
-  <int value="5"
-      label="Profile shutdown, sync is active, started paused, consent change"/>
-  <int value="6"
-      label="Profile shutdown, sync is active, started paused, no consent
-             change"/>
-  <int value="7"
-      label="Profile shutdown, sync is active, started active, consent change"/>
-  <int value="8"
-      label="Profile shutdown, sync is active, started active, no consent
-             change"/>
-  <int value="9" label="Profile shutdown, sync is paused"/>
-</enum>
-
 <enum name="ClientAppId">
   <int value="0" label="Other"/>
   <int value="1" label="Gmail"/>
@@ -2517,13 +2472,6 @@
   <int value="4" label="The network is validated"/>
 </enum>
 
-<enum name="ConsentAuditorFeature">
-  <int value="0" label="CHROME_SYNC"/>
-  <int value="1" label="PLAY_STORE"/>
-  <int value="2" label="BACKUP_AND_RESTORE"/>
-  <int value="3" label="GOOGLE_LOCATION_SERVICE"/>
-</enum>
-
 <enum name="ContentIndexCategory">
   <summary>
     The type of a Content Index entry. Corresponds to
@@ -2544,24 +2492,6 @@
   <int value="5" label="DETECT_IMPORTANT_CONTENT"/>
 </enum>
 
-<!-- LINT.IfChange(ContentSettingPatternScope) -->
-
-<enum name="ContentSettingPatternScope">
-  <int value="0" label="Origin scoped"/>
-  <int value="1" label="With domain wildcard"/>
-  <int value="2" label="With port wildcard"/>
-  <int value="3" label="With scheme wildcard"/>
-  <int value="4" label="With scheme and port wildcard"/>
-  <int value="5" label="With domain and port wildcard"/>
-  <int value="6" label="With domain and scheme wildcard"/>
-  <int value="7" label="With domain and scheme and port wildcard"/>
-  <int value="8" label="Full wildcard"/>
-  <int value="9" label="File path"/>
-  <int value="10" label="Custom scope"/>
-</enum>
-
-<!-- LINT.ThenChange(//components/content_settings/core/common/content_settings_pattern.h:Scope) -->
-
 <!-- LINT.IfChange(ContentType) -->
 
 <enum name="ContentType">
@@ -2853,27 +2783,6 @@
   <int value="3" label="Both read and wrote cookies"/>
 </enum>
 
-<!-- LINT.IfChange(CookieControlsMode) -->
-
-<enum name="CookieControlsMode">
-  <int value="0" label="Off"/>
-  <int value="1" label="BlockThirdParty"/>
-  <int value="2" label="IncognitoOnly"/>
-  <int value="3" label="Limited"/>
-</enum>
-
-<!-- LINT.ThenChange(/components/content_settings/core/browser/cookie_settings.h:CookieControlsMode, /chrome/browser/resources/settings/site_settings/constants.ts:CookieControlsMode) -->
-
-<enum name="CookieDeprecationFacilitatedTestingProfileEligibility">
-  <int value="0" label="Eligible"/>
-  <int value="1" label="Ineligible: 3P Cookies blocked"/>
-  <int value="2" label="Ineligible: Has not seen Ads API GA notice"/>
-  <int value="3" label="Ineligible: New user"/>
-  <int value="4" label="Ineligible: Enterprise user"/>
-  <int value="5" label="Ineligible: PWA or TWA installed on Android"/>
-  <int value="6" label="Eligible: Forced via kForceEligibleForTesting"/>
-</enum>
-
 <enum name="CookieHeuristicInteractionType">
   <int value="0" label="Authentication"/>
   <int value="1" label="UserActivation"/>
@@ -3600,57 +3509,6 @@
   <int value="61" label="Content Transfer"/>
 </enum>
 
-<enum name="DeleteBrowsingDataAction">
-  <int value="0" label="CBD dialog"/>
-  <int value="1" label="Clear on exit"/>
-  <int value="2" label="Close Incognito tabs"/>
-  <int value="3" label="Cookies in use dialog"/>
-  <int value="4" label="Site settings page"/>
-  <int value="5" label="History Page Entries"/>
-  <int value="6" label="Quick delete"/>
-  <int value="7" label="Page info permission reset"/>
-  <int value="8" label="RWS delete all data"/>
-</enum>
-
-<!--LINT.IfChange(DeleteBrowsingDataDialogAction) -->
-
-<enum name="DeleteBrowsingDataDialogAction">
-  <int value="0" label="Browsing History Toggled On"/>
-  <int value="1" label="Browsing History Toggled Off"/>
-  <int value="2" label="Tabs Toggled On"/>
-  <int value="3" label="Tabs Toggled Off"/>
-  <int value="4" label="Site Data Toggled On"/>
-  <int value="5" label="Site Data Toggled Off"/>
-  <int value="6" label="Cache Toggled On"/>
-  <int value="7" label="Cache Toggled Off"/>
-  <int value="8" label="Passwords Toggled On"/>
-  <int value="9" label="Passwords Toggled Off"/>
-  <int value="10" label="Autofill Toggled On"/>
-  <int value="11" label="Autofill Toggled Off"/>
-  <int value="12" label="Confirm data type selection changes"/>
-  <int value="13" label="Cancel data type selection changes"/>
-  <int value="14" label="Sign out footer link opened"/>
-  <int value="15" label="Last 15 Minutes selected"/>
-  <int value="16" label="Last Hour selected"/>
-  <int value="17" label="Last day selected"/>
-  <int value="18" label="Last week selected"/>
-  <int value="19" label="Last four weeks selected"/>
-  <int value="20" label="Older than 30 days selected"/>
-  <int value="21" label="All time selected"/>
-  <int value="22" label="Browsing data row selected"/>
-  <int value="23" label="Search history link opened"/>
-  <int value="24" label="My Activity link opened"/>
-  <int value="25" label="Deletion selected"/>
-  <int value="26" label="Cancel selected"/>
-  <int value="27" label="Dialog dismissed implicitly"/>
-  <int value="28" label="Menu item entry point (i.e. three dot menu) selected"/>
-  <int value="29" label="History page entry point selected"/>
-  <int value="30" label="Privacy page entry point selected"/>
-  <int value="31" label="Keyboard entry point selected"/>
-</enum>
-
-<!--LINT.ThenChange(//components/browsing_data/core/browsing_data_utils.h:DeleteBrowsingDataDialogAction) -->
-
 <enum name="DemoModeApp">
   <summary>
     Pre-installed app or other window type available in Chrome OS Demo Mode.
@@ -3929,61 +3787,6 @@
   <int value="44" label="Unknown owner no key, no policy"/>
 </enum>
 
-<enum name="DIPSDeletionAction">
-  <int value="0" label="Disallowed"/>
-  <int value="1" label="ExceptedAs1p"/>
-  <int value="2" label="ExceptedAs3p"/>
-  <int value="3" label="Enforced"/>
-  <int value="4" label="Ignored: Due to empty site."/>
-  <int value="5" label="Excepted"/>
-</enum>
-
-<enum name="DIPSDirectNavigationSource">
-  <int value="0" label="Unknown"/>
-  <int value="1" label="Omnibar"/>
-  <int value="2" label="Bookmark"/>
-</enum>
-
-<enum name="DIPSErrorCode">
-  <int value="0" label="No DIPSDatabase::Read error was encountered"/>
-  <int value="1"
-      label="DIPSDatabase::Read Error: A range in the db has an open-range
-             (NULL, end]."/>
-  <int value="2"
-      label="DIPSDatabase::Read Error: A range in the db has an open-range
-             [start, NULL)."/>
-  <int value="3"
-      label="DIPSDatabase::Read Error: `bounce_times` doesn't fully contain
-             `stateful_bounce_times`."/>
-  <int value="4"
-      label="DIPSDatabase::Read Error: A query was made for an empty `site`;
-             db has an entry with an empty `site`."/>
-  <int value="5"
-      label="DIPSDatabase::Read Error: A query was made for an empty `site`;
-             db does not have an entry with an empty `site`."/>
-  <int value="6" label="No DIPSDatabase::Write error was encountered"/>
-  <int value="7" label="DIPSDatabase::Write Error: `site` is empty."/>
-</enum>
-
-<enum name="DIPSRedirectCategory">
-  <int value="0" label="No cookies accessed; no previous site engagement"/>
-  <int value="1" label="Cookies only read; no previous site engagement"/>
-  <int value="2" label="Cookies only written; no previous site engagement"/>
-  <int value="3" label="Cookies read and written; no previous site engagement"/>
-  <int value="4" label="No cookies accessed; site has previous engagement"/>
-  <int value="5" label="Cookies only read; site has previous engagement"/>
-  <int value="6" label="Cookies only written; site has previous engagement"/>
-  <int value="7"
-      label="Cookies read and written; site has previous engagement"/>
-  <int value="8" label="Unknown cookie access; no previous site engagement"/>
-  <int value="9" label="Unknown cookie access; site has previous engagement"/>
-</enum>
-
-<enum name="DIPSRedirectType">
-  <int value="0" label="Client redirect"/>
-  <int value="1" label="Server redirect"/>
-</enum>
-
 <enum name="DirectFromSellerSignalsRequestType">
   <int value="0" label="Network service fetch"/>
   <int value="1" label="Cache"/>
@@ -9328,6 +9131,7 @@
   <int value="-1808477331" label="MidiManagerCros:disabled"/>
   <int value="-1808445397" label="ShareByDefaultInCCT:disabled"/>
   <int value="-1807797669" label="google-doodle-url"/>
+  <int value="-1807481332" label="NewContentForCheckerboardedScrolls:disabled"/>
   <int value="-1807092388" label="ReduceUserAgentPlatformOsCpu:enabled"/>
   <int value="-1806998617" label="CCTPredictiveBackGesture:enabled"/>
   <int value="-1806739839"
@@ -9577,6 +9381,7 @@
       label="VirtualKeyboardMultipasteSuggestion:disabled"/>
   <int value="-1699505493" label="QuickDeleteAndroidFollowup:enabled"/>
   <int value="-1698438797" label="TabGroupsCollapseFreezing:enabled"/>
+  <int value="-1698059272" label="NewContentForCheckerboardedScrolls:enabled"/>
   <int value="-1696778023"
       label="HappinessTrackingSurveysForDesktopSettings:disabled"/>
   <int value="-1696619241" label="OmniboxWrapPopupPosition:disabled"/>
@@ -22871,312 +22676,6 @@
   <int value="11" label="No RenderFrame"/>
 </enum>
 
-<!-- LINT.IfChange(PrivacySandboxActSurveyStatus) -->
-
-<enum name="PrivacySandboxActSurveyStatus">
-  <int value="0" label="Survey was successfully launched"/>
-  <int value="1" label="Feature not enabled"/>
-  <int value="2" label="Failed to fetch HaTS service"/>
-  <int value="3" label="Failed to launch survey"/>
-  <int value="4" label="Not in Incognito profile"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/incognito/privacy_sandbox_incognito_survey_service.h:PrivacySandboxActSurveyStatus) -->
-
-<enum name="PrivacySandboxAggregationServiceKeyFetcherStatus">
-  <int value="0" label="Success"/>
-  <int value="1" label="Download error"/>
-  <int value="2" label="Json parse error"/>
-  <int value="3" label="Invalid key error"/>
-  <int value="4" label="Expired key error"/>
-</enum>
-
-<enum name="PrivacySandboxAggregationServiceReportAssemblerStatus">
-  <int value="0" label="Ok"/>
-  <int value="1" label="Public key fetch error"/>
-  <int value="2" label="Assembly error"/>
-  <int value="3" label="Too many requests error"/>
-</enum>
-
-<enum name="PrivacySandboxAggregationServiceReportSenderStatus">
-  <int value="0" label="Ok"/>
-  <int value="1" label="Network error"/>
-  <int value="2" label="Server error"/>
-</enum>
-
-<enum name="PrivacySandboxAggregationServiceStorageSqlInitStatus">
-  <int value="0" label="Success"/>
-  <int value="1" label="Failed to open DB in memory"/>
-  <int value="2" label="Failed to open DB file"/>
-  <int value="3" label="Failed to create directory"/>
-  <int value="4" label="Failed to initialize schema"/>
-</enum>
-
-<enum name="PrivacySandboxApiAllowed">
-  <int value="0" label="Allowed"/>
-  <int value="1" label="Restricted"/>
-  <int value="2" label="Incognito profile"/>
-  <int value="3" label="Apis disabled"/>
-  <int value="4" label="Site data access blocked"/>
-  <int value="5" label="Mismatched Consent"/>
-  <int value="6" label="Attestation failed"/>
-  <int value="7"
-      label="Deprecated. Component installer has not yet checked the
-             attestations file, or attestations file not present"/>
-  <int value="8" label="Attestations downloaded, not yet loaded"/>
-  <int value="9" label="Attestations file corrupt"/>
-  <int value="10" label="Protected Audience joining blocked due to top frame"/>
-  <int value="11"
-      label="Disabled by third-party cookie deprecation experiment"/>
-  <int value="12"
-      label="Component installer has not yet checked the attestations file"/>
-  <int value="13" label="Attestations file not present"/>
-</enum>
-
-<enum name="PrivacySandboxAttestationLoadAPKAssetStatus">
-  <int value="0" label="Success"/>
-  <int value="1" label="Fail to open the attestations list from APK assets"/>
-  <int value="2"
-      label="Fail to create a memory mapped file of the attestations list
-             from APK assets"/>
-  <int value="3" label="Fail to parse the content of the attestations list"/>
-</enum>
-
-<enum name="PrivacySandboxAttestationParsingStatus">
-  <int value="0" label="Success"/>
-  <int value="1" label="NotNewerVersion"/>
-  <int value="2" label="FileNotExist"/>
-  <int value="3" label="SentinelFilePresent"/>
-  <int value="4" label="CannotCreateSentinel"/>
-  <int value="5" label="CannotRemoveSentinel"/>
-  <int value="6" label="CannotParseFile"/>
-</enum>
-
-<enum name="PrivacySandboxAttestationsFileSource">
-  <int value="0" label="Pre-installed"/>
-  <int value="1" label="Downloaded"/>
-</enum>
-
-<!-- LINT.IfChange(PrivacySandboxCctAdsNoticeSurveyFailures) -->
-
-<enum name="PrivacySandboxCctAdsNoticeSurveyFailures">
-  <int value="0" label="Feature not enabled"/>
-  <int value="1" label="App ID mismatch"/>
-  <int value="2" label="No notice interaction found"/>
-  <int value="3" label="Invalid prompt type found"/>
-  <int value="4" label="Failed to find survey config for EEA accepted"/>
-  <int value="5" label="Failed to find survey config for EEA declined"/>
-  <int value="6" label="Failed to find survey config for EEA control"/>
-  <int value="7" label="Failed to find survey config for ROW acknowledged"/>
-  <int value="8" label="Failed to find survey config for ROW control"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java:PrivacySandboxCctAdsNoticeSurveyFailures) -->
-
-<!-- LINT.IfChange(PrivacySandboxDialogCallbackState) -->
-
-<enum name="PrivacySandboxDialogCallbackState">
-  <int value="0" label="SingleActionCallbackDNE"/>
-  <int value="1" label="MultiActionCallbackDNE"/>
-  <int value="2" label="CallbackUnknownBeforeShown"/>
-</enum>
-
-<!-- LINT.ThenChange(//chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h:PrivacySandboxDialogCallbackState) -->
-
-<!-- LINT.IfChange(PrivacySandboxNoticeAction) -->
-
-<enum name="PrivacySandboxNoticeAction">
-  <int value="0" label="NotSet"/>
-  <int value="1" label="Ack"/>
-  <int value="2" label="Closed"/>
-  <int value="3" label="LearnMore"/>
-  <int value="4" label="OptIn"/>
-  <int value="5" label="OptOut"/>
-  <int value="6" label="Other"/>
-  <int value="7" label="Settings"/>
-  <int value="8" label="UnknownActionPreMigration"/>
-  <int value="9" label="TimedOut"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/notice/notice_storage.h:NoticeActionTaken) -->
-
-<!-- LINT.IfChange(PrivacySandboxNoticeActionBehavior) -->
-
-<enum name="PrivacySandboxNoticeActionBehavior">
-  <int value="0" label="Success"/>
-  <int value="1" label="ActionBeforeShown"/>
-  <int value="2" label="DuplicateActionTaken"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/notice/notice_storage.h:NoticeActionBehavior) -->
-
-<!-- LINT.IfChange(PrivacySandboxNoticeEvent) -->
-
-<enum name="PrivacySandboxNoticeEvent">
-  <int value="0" label="Ack"/>
-  <int value="1" label="Closed"/>
-  <int value="2" label="OptIn"/>
-  <int value="3" label="OptOut"/>
-  <int value="4" label="Settings"/>
-  <int value="5" label="Shown"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/notice/notice.mojom:PrivacySandboxNoticeEvent) -->
-
-<!-- LINT.IfChange(PrivacySandboxPrimaryAccountUserGroups) -->
-
-<enum name="PrivacySandboxPrimaryAccountUserGroups">
-  <int value="0" label="NotSet"/>
-  <int value="1" label="SignedOut"/>
-  <int value="2" label="SignedInCapabilityFalse"/>
-  <int value="3" label="SignedInCapabilityTrue"/>
-  <int value="4" label="SignedInCapabilityUnknown"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/privacy_sandbox_service.h:PrimaryAccountUserGroups) -->
-
-<enum name="PrivacySandboxPrivateAggregationBudgeterBudgetValidityStatus2">
-  <int value="0" label="Valid"/>
-  <int value="1" label="Valid but empty; no budget data stored"/>
-  <int value="2"
-      label="Valid but contains an entry with a stale entry, i.e. a window
-             from over a day ago"/>
-  <int value="3" label="Contains a value with a timestamp in the future"/>
-  <int value="4"
-      label="Contains a value with a value that exceeds the budget limit"/>
-  <int value="5"
-      label="Contains an entry with a timestamp that is not rounded to a
-             minute"/>
-  <int value="6" label="Contains budget data that spans more than a day"/>
-  <int value="7" label="Contains an entry with a nonpositive budget value"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationBudgeterRequestResult3">
-  <int value="0" label="Approved"/>
-  <int value="1" label="Insufficient budget left in 10-min scope"/>
-  <int value="2" label="Insufficient budget left in daily scope"/>
-  <int value="3" label="Requested more than total budget"/>
-  <int value="4" label="Too many pending calls"/>
-  <int value="5" label="Storage initialization failed"/>
-  <int value="6" label="Bad values on disk"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationBudgetStorageInitStatus">
-  <int value="0" label="Success"/>
-  <int value="1" label="Failed to open DB in memory"/>
-  <int value="2" label="Failed to open DB file"/>
-  <int value="3" label="Failed to create directory"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationHostFilteringIdStatus">
-  <int value="0" label="No filtering ID, default max bytes"/>
-  <int value="1" label="Filtering ID provided, default max bytes"/>
-  <int value="2" label="No filtering ID, custom max bytes"/>
-  <int value="3" label="Filtering ID provided, custom max bytes"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationHostPipeResult">
-  <int value="0" label="Report success"/>
-  <int value="1"
-      label="Report success but truncated due to too many contributions"/>
-  <int value="2" label="No report, but no error"/>
-  <int value="3" label="API disabled in settings"/>
-  <int value="4" label="Enable debug mode called multiple times"/>
-  <int value="5" label="Negative value"/>
-  <int value="6" label="Filtering ID invalid"/>
-  <int value="7" label="Necessary feature not enabled"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationHostTimeoutResult">
-  <int value="0" label="Occurred before remote disconnection"/>
-  <int value="1" label="Occurred after remote disconnection"/>
-  <int value="2" label="Canceled due to error"/>
-  <int value="3" label="Still scheduled on shutdown"/>
-</enum>
-
-<enum name="PrivacySandboxPrivateAggregationManagerRequestResult">
-  <int value="0" label="Sent with contributions"/>
-  <int value="1" label="Sent without contributions"/>
-  <int value="2" label="Sent but contributions cleared due to budget denial"/>
-  <int value="3" label="Not sent"/>
-</enum>
-
-<!-- LINT.IfChange(PrivacySandboxPrivateAggregationTruncationResult) -->
-
-<enum name="PrivacySandboxPrivateAggregationTruncationResult">
-  <int value="0" label="No truncation occurred"/>
-  <int value="1"
-      label="Truncation occurred with the unconditional contributions alone
-             exceeding the limit"/>
-  <int value="2"
-      label="Truncation occurred but the unconditional contributions alone
-             did not exceed the limit"/>
-</enum>
-
-<!-- LINT.ThenChange(/content/browser/private_aggregation/private_aggregation_pending_contributions.h:TruncationResult) -->
-
-<!-- LINT.IfChange(PrivacySandboxPromptSuppressionReason) -->
-
-<enum name="PrivacySandboxPromptSuppressionReason">
-<!-- Used as a bitfield so values must be ascending powers of 2 -->
-
-  <int value="0" label="None"/>
-  <int value="1" label="3PC_Blocked"/>
-  <int value="2" label="CapabilityFalse"/>
-  <int value="4" label="ManagedDevice"/>
-  <int value="8" label="NoticeShownBefore"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/privacy_sandbox_service.h:FakeNoticePromptSuppressionReason) -->
-
-<!-- LINT.IfChange(PrivacySandboxSentimentSurveyStatus) -->
-
-<enum name="PrivacySandboxSentimentSurveyStatus">
-  <int value="0" label="Survey was successfully launched"/>
-  <int value="1" label="Feature not enabled"/>
-  <int value="2" label="Failed to fetch HaTS service"/>
-  <int value="3" label="Failed to launch survey"/>
-  <int value="4" label="Failed to find survey config"/>
-</enum>
-
-<!-- LINT.ThenChange(/components/privacy_sandbox/privacy_sandbox_survey_service.h:PrivacySandboxSentimentSurveyStatus) -->
-
-<enum name="PrivacySandboxStorageActivityType">
-  <int value="0" label="Received kOther (partial CCT or unknown) type"/>
-  <int value="1" label="Received kTabbed (BrowserApp) type"/>
-  <int value="2" label="Received kAGSACustomTab type"/>
-  <int value="3" label="Received kNonAGSACustomTab type"/>
-  <int value="4" label="Received kTrustedWebActivity type"/>
-  <int value="5" label="Received kWebapp type"/>
-  <int value="6" label="Received kWebApk type"/>
-  <int value="7" label="Received kPreFirstTab type"/>
-</enum>
-
-<enum name="PrivacySandboxStorageUserSegmentByRecentActivity">
-  <int value="0" label="kHasOther"/>
-  <int value="1" label="kHasBrowserApp"/>
-  <int value="2" label="kHasAGSACCT"/>
-  <int value="3" label="kHasNonAGSACCT"/>
-  <int value="4" label="kHasPWA"/>
-  <int value="5" label="kHasTWA"/>
-  <int value="6" label="kHasWebapp"/>
-  <int value="7" label="kHasPreFirstTab"/>
-</enum>
-
-<!-- LINT.IfChange(PrivacySandboxSurveyTypesEnums) -->
-
-<enum name="PrivacySandboxSurveyTypes">
-  <int value="0" label="Unknown Survey"/>
-  <int value="1" label="Sentiment Survey"/>
-  <int value="2" label="Accepted EEA Survey"/>
-  <int value="3" label="Declined EEA Survey"/>
-  <int value="4" label="Control EEA Survey"/>
-  <int value="5" label="Acknowledged ROW Survey"/>
-  <int value="6" label="Control ROW Survey"/>
-</enum>
-
-<!-- LINT.ThenChange(/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java:PrivacySandboxSurveyTypes) -->
-
 <enum name="ProbeResult">
   <int value="0" label="No internet"/>
   <int value="1" label="Server error"/>
@@ -23435,24 +22934,6 @@
   <int value="3" label="TTS_EVENT_OTHER"/>
 </enum>
 
-<enum name="QuickDeleteAction">
-  <int value="0" label="Entry from menu item clicked"/>
-  <int value="1" label="Delete button on dialog clicked"/>
-  <int value="2" label="Cancel button on dialog clicked"/>
-  <int value="3"
-      label="Dialog dismissed due to reasons other than Cancel or Delete"/>
-  <int value="4" label="Entry from tab switcher menu item clicked"/>
-  <int value="5" label="More options button on dialog clicked"/>
-  <int value="6" label="My activity link on dialog clicked"/>
-  <int value="7" label="Search history link on dialog clicked"/>
-  <int value="8" label="last 15 minutes deletion time range selected"/>
-  <int value="9" label="last hour minutes deletion time range selected"/>
-  <int value="10" label="last day minutes deletion time range selected"/>
-  <int value="11" label="last week minutes deletion time range selected"/>
-  <int value="12" label="last four weeks deletion time range selected"/>
-  <int value="13" label="All time deletion time range selected"/>
-</enum>
-
 <enum name="QuickofficeErrorTypes">
   <int value="0" label="doc uncaught js exception"/>
   <int value="1" label="docx uncaught js exception"/>
@@ -24276,12 +23757,6 @@
   <int value="2" label="SCROLLING_ON_MAIN"/>
 </enum>
 
-<enum name="SecCookieDeprecationHeaderStatus">
-  <int value="0" label="kSet"/>
-  <int value="1" label="kNoLabel"/>
-  <int value="2" label="kNoCookie"/>
-</enum>
-
 <!-- LINT.IfChange(SecureChannelConnectionAttemptFailureReason) -->
 
 <enum name="SecureChannelConnectionAttemptFailureReason">
@@ -25639,12 +25114,6 @@
   <int value="1" label="SearchEngine"/>
 </enum>
 
-<enum name="ThirdPartySiteDataAccessType">
-  <int value="0" label="Any blocked third-party site data accesses"/>
-  <int value="1" label="Any allowed third-party site data accesses"/>
-  <int value="2" label="No third-party site data accesses"/>
-</enum>
-
 <enum name="TimeZoneRequestEvent">
   <int value="0" label="Request start"/>
   <int value="1" label="Response success"/>
@@ -26658,6 +26127,18 @@
 
 <!--LINT.ThenChange(//components/page_info/core/page_info_action.h:PageInfoAction) -->
 
+<!-- LINT.IfChange(WebStoreLinkClicked) -->
+
+<enum name="WebStoreLinkClicked">
+  <int value="0" label="'Discover Extensions' link"/>
+  <int value="1" label="'Find Coupons' link"/>
+  <int value="2" label="'Write Better' link"/>
+  <int value="3" label="'Boost Productivity' link"/>
+  <int value="4" label="'Enhance with AI' link"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/ui/webui/extensions_zero_state_promo/zero_state_promo.mojom:WebStoreLinkClicked) -->
+
 <enum name="WebUsbChooserClosed">
   <int value="0" label="User cancelled"/>
   <int value="1" label="User cancelled, no devices available"/>
diff --git a/tools/metrics/histograms/histograms_xml_files.gni b/tools/metrics/histograms/histograms_xml_files.gni
index 1eef44c..3035dee 100644
--- a/tools/metrics/histograms/histograms_xml_files.gni
+++ b/tools/metrics/histograms/histograms_xml_files.gni
@@ -205,6 +205,7 @@
   "//tools/metrics/histograms/metadata/preloading/histograms.xml",
   "//tools/metrics/histograms/metadata/printing/enums.xml",
   "//tools/metrics/histograms/metadata/printing/histograms.xml",
+  "//tools/metrics/histograms/metadata/privacy/enums.xml",
   "//tools/metrics/histograms/metadata/privacy/histograms.xml",
   "//tools/metrics/histograms/metadata/privacy_budget/enums.xml",
   "//tools/metrics/histograms/metadata/privacy_budget/histograms.xml",
diff --git a/tools/metrics/histograms/metadata/attribution_reporting/enums.xml b/tools/metrics/histograms/metadata/attribution_reporting/enums.xml
index f432027..a744fb4 100644
--- a/tools/metrics/histograms/metadata/attribution_reporting/enums.xml
+++ b/tools/metrics/histograms/metadata/attribution_reporting/enums.xml
@@ -441,6 +441,15 @@
 
 <!-- LINT.ThenChange(//content/browser/attribution_reporting/attribution_storage_sql.h:InitStatus) -->
 
+<!-- LINT.IfChange(ConversionTriggerDataMatching) -->
+
+<enum name="ConversionTriggerDataMatching">
+  <int value="0" label="modulus"/>
+  <int value="1" label="exact"/>
+</enum>
+
+<!-- LINT.ThenChange(//components/attribution_reporting/trigger_data_matching.mojom:TriggerDataMatching) -->
+
 <!-- LINT.IfChange(ConversionTriggerRegistrationError) -->
 
 <enum name="ConversionTriggerRegistrationError">
diff --git a/tools/metrics/histograms/metadata/attribution_reporting/histograms.xml b/tools/metrics/histograms/metadata/attribution_reporting/histograms.xml
index ac0fe51..ba3ed99 100644
--- a/tools/metrics/histograms/metadata/attribution_reporting/histograms.xml
+++ b/tools/metrics/histograms/metadata/attribution_reporting/histograms.xml
@@ -1421,6 +1421,29 @@
   </summary>
 </histogram>
 
+<histogram name="Conversions.TriggerDataMatchingModulusSameInputOutput"
+    units="bool" expires_after="2025-08-24">
+  <owner>tquintanilla@chromium.org</owner>
+  <owner>apaseltiner@chromium.org</owner>
+  <owner>measurement-api-dev+metrics@google.com</owner>
+  <summary>
+    When a chosen source for attribution contains the trigger data matching mode
+    `modulus`, measures whether the passed trigger data equals the source's
+    chosen trigger data. Recorded when creating an event-level report.
+  </summary>
+</histogram>
+
+<histogram name="Conversions.TriggerDataMatchingRegistration"
+    enum="ConversionTriggerDataMatching" expires_after="2025-08-24">
+  <owner>tquintanilla@chromium.org</owner>
+  <owner>apaseltiner@chromium.org</owner>
+  <owner>measurement-api-dev+metrics@google.com</owner>
+  <summary>
+    Records the trigger data matching mode when registering a source (modulus is
+    the default mode). Recorded on successful source registration.
+  </summary>
+</histogram>
+
 <histogram name="Conversions.TriggerRegistrationError11"
     enum="ConversionTriggerRegistrationError" expires_after="2025-08-24">
   <owner>tquintanilla@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/collaboration_service/histograms.xml b/tools/metrics/histograms/metadata/collaboration_service/histograms.xml
index cf71d8a..5fc2d048 100644
--- a/tools/metrics/histograms/metadata/collaboration_service/histograms.xml
+++ b/tools/metrics/histograms/metadata/collaboration_service/histograms.xml
@@ -57,7 +57,7 @@
   </summary>
 </histogram>
 
-<histogram name="CollaborationService.Latency2.{CollaborationServiceStep}"
+<histogram name="CollaborationService.Latency.{CollaborationServiceStep}"
     units="ms" expires_after="2025-10-11">
   <owner>haileywang@google.com</owner>
   <owner>chrome-tab-group-eng@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml
index d2d76c3..8d31f98b 100644
--- a/tools/metrics/histograms/metadata/compositing/histograms.xml
+++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -757,16 +757,6 @@
   </summary>
 </histogram>
 
-<histogram name="Compositing.SurfaceAggregator.CopiedSurfaceCount"
-    units="surfaces" expires_after="2025-06-01">
-  <owner>kylechar@chromium.org</owner>
-  <owner>jonross@chromium.org</owner>
-  <summary>
-    The number of surfaces where the active CompositorFrame was copied into the
-    AggregateFrame during surface aggregation. This is logged once per frame.
-  </summary>
-</histogram>
-
 <histogram name="Compositing.SurfaceAggregator.CopyUs" units="microseconds"
     expires_after="2025-08-03">
   <owner>kylechar@chromium.org</owner>
@@ -807,16 +797,6 @@
   </token>
 </histogram>
 
-<histogram name="Compositing.SurfaceAggregator.PrewalkedSurfaceCount"
-    units="surfaces" expires_after="2025-06-01">
-  <owner>kylechar@chromium.org</owner>
-  <owner>jonross@chromium.org</owner>
-  <summary>
-    The number of surfaces that were looked at during the prewalk phase of
-    surface aggregation. This is logged once per frame.
-  </summary>
-</histogram>
-
 <histogram name="Compositing.SurfaceAggregator.PrewalkUs" units="microseconds"
     expires_after="2025-08-03">
   <owner>kylechar@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/enterprise/enums.xml b/tools/metrics/histograms/metadata/enterprise/enums.xml
index 7bacc5d..c36ee2c 100644
--- a/tools/metrics/histograms/metadata/enterprise/enums.xml
+++ b/tools/metrics/histograms/metadata/enterprise/enums.xml
@@ -2234,6 +2234,7 @@
   <int value="1363" label="TLS13EarlyDataEnabled"/>
   <int value="1364" label="LocalNetworkAccessRestrictionsEnabled"/>
   <int value="1365" label="PrefetchWithServiceWorkerEnabled"/>
+  <int value="1366" label="AIModeSearchSuggestSettings"/>
 </enum>
 
 <enum name="EnterprisePoliciesSources">
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml
index ec2bec4..34a0cf1 100644
--- a/tools/metrics/histograms/metadata/extensions/histograms.xml
+++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -5601,6 +5601,17 @@
   </summary>
 </histogram>
 
+<histogram name="Extensions.ZeroStatePromo.WebStoreLinkClicked.{Link}"
+    enum="WebStoreLinkClicked" expires_after="2025-07-27">
+  <owner>uwyiming@chromium.org</owner>
+  <owner>cws-consumer-team@google.com</owner>
+  <summary>
+    Records that the users clicked a link or button in the Extension Zero State
+    promo page. The value indicates the link that the user clicked.
+  </summary>
+  <token key="Link"/>
+</histogram>
+
 <histogram
     name="Extensions.{ExtensionSource}ForceInstalledFailureManifestInvalidErrorDetail2"
     enum="ManifestInvalidError" expires_after="never">
diff --git a/tools/metrics/histograms/metadata/glic/enums.xml b/tools/metrics/histograms/metadata/glic/enums.xml
index 8ac04c8..03bff14 100644
--- a/tools/metrics/histograms/metadata/glic/enums.xml
+++ b/tools/metrics/histograms/metadata/glic/enums.xml
@@ -253,6 +253,7 @@
   <int value="5" label="NoMatchingDocument"/>
   <int value="6" label="SearchRangeInvalid"/>
   <int value="7" label="TabContextPermissionDisabled"/>
+  <int value="8" label="DroppedByWebClient"/>
 </enum>
 
 <!-- LINT.ThenChange(//chrome/browser/glic/host/glic.mojom:ScrollToErrorReason) -->
diff --git a/tools/metrics/histograms/metadata/glic/histograms.xml b/tools/metrics/histograms/metadata/glic/histograms.xml
index e6111f8f..e8f8a53 100644
--- a/tools/metrics/histograms/metadata/glic/histograms.xml
+++ b/tools/metrics/histograms/metadata/glic/histograms.xml
@@ -71,6 +71,7 @@
     <variant name="ClosePanelAndShutdown"/>
     <variant name="CreateTab"/>
     <variant name="DetachPanel"/>
+    <variant name="DropScrollToHighlight"/>
     <variant name="EnableDragResize"/>
     <variant name="GetContextFromFocusedTab"/>
     <variant name="GetOsMicrophonePermissionStatus"/>
diff --git a/tools/metrics/histograms/metadata/memory/enums.xml b/tools/metrics/histograms/metadata/memory/enums.xml
index 0a9b31e7..61bc14c 100644
--- a/tools/metrics/histograms/metadata/memory/enums.xml
+++ b/tools/metrics/histograms/metadata/memory/enums.xml
@@ -56,6 +56,7 @@
 <enum name="SelfCompactionCancellationReason">
   <int value="0" label="Frozen by App Freezer"/>
   <int value="1" label="Page resumed"/>
+  <int value="2" label="Timeout"/>
 </enum>
 
 <enum name="VmmmsRequestPriority">
diff --git a/tools/metrics/histograms/metadata/memory/histograms.xml b/tools/metrics/histograms/metadata/memory/histograms.xml
index cc5aa85..da5ed16 100644
--- a/tools/metrics/histograms/metadata/memory/histograms.xml
+++ b/tools/metrics/histograms/metadata/memory/histograms.xml
@@ -2757,7 +2757,7 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.RunningOrSelfCompact.Renderer.CancellationReason"
+<histogram name="Memory.RunningOrSelfCompact.Renderer.Cancellation.Reason"
     enum="SelfCompactionCancellationReason" expires_after="2025-10-06">
   <owner>thiabaud@google.com</owner>
   <owner>lizeb@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/network/histograms.xml b/tools/metrics/histograms/metadata/network/histograms.xml
index b919774..c3d85e9 100644
--- a/tools/metrics/histograms/metadata/network/histograms.xml
+++ b/tools/metrics/histograms/metadata/network/histograms.xml
@@ -2717,7 +2717,6 @@
 
 <histogram name="Network.Shill.Cellular.TimeToRedirectFound" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
   <owner>hugobenichi@google.com</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
@@ -2900,7 +2899,6 @@
 
 <histogram name="Network.Shill.Ethernet.TimeToRedirectFound" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
   <owner>hugobenichi@google.com</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
@@ -3750,7 +3748,7 @@
 
 <histogram name="Network.Shill.WiFi.Ap80211kSupport" enum="WiFiAp80211kSupport"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -3760,7 +3758,7 @@
 
 <histogram name="Network.Shill.WiFi.Ap80211rSupport" enum="WiFiAp80211rSupport"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -3780,7 +3778,7 @@
 
 <histogram name="Network.Shill.WiFi.Ap80211vBSSMaxIdlePeriodSupport"
     enum="WiFiAp80211vBSSMaxIdlePeriodSupport" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -3791,7 +3789,7 @@
 
 <histogram name="Network.Shill.WiFi.Ap80211vBSSTransitionSupport"
     enum="WiFiAp80211vBSSTransitionSupport" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -3802,7 +3800,7 @@
 
 <histogram name="Network.Shill.WiFi.Ap80211vDMSSupport"
     enum="WiFiAp80211vDMSSupport" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -3823,7 +3821,7 @@
 
 <histogram name="Network.Shill.WiFi.ApChannelSwitch" enum="WiFiApChannelSwitch"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network usage metric sampled when an AP switches channels. Shows
@@ -3887,7 +3885,7 @@
 
 <histogram name="Network.Shill.WiFi.AutoConnectableServices" units="units"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of wifi services available for
@@ -3897,7 +3895,7 @@
 
 <histogram name="Network.Shill.WiFi.AvailableBSSesAtConnect" units="units"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of BSSes (endpoints) available
@@ -3929,7 +3927,7 @@
 
 <histogram name="Network.Shill.WiFi.BSSTransitionManagementSupport"
     enum="WiFiBSSTransitionManagementSupport" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric recording BSS Transition Management statuses. This
@@ -3950,7 +3948,7 @@
 
 <histogram name="Network.Shill.WiFi.CiscoAdaptiveFTSupport"
     enum="WiFiCiscoAdaptiveFTSupport" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of Wireless Access Points that
@@ -4014,7 +4012,7 @@
 
 <histogram name="Network.Shill.Wifi.EapInnerProtocol" enum="EAPInnerProtocol"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network usage metric sampled on each successful 802.1x wireless
@@ -4024,7 +4022,7 @@
 
 <histogram name="Network.Shill.Wifi.EapOuterProtocol" enum="EAPOuterProtocol"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network usage metric sampled on each successful 802.1x wireless
@@ -4125,7 +4123,7 @@
 
 <histogram name="Network.Shill.WiFi.MBOSupport" enum="MBOSupport"
     expires_after="2025-12-31">
-  <owner>matthewmwang@google.com</owner>
+  <owner>norvez@google.com</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric that tracks the Multi-Band Operation (MBO) support
@@ -4352,7 +4350,6 @@
 
 <histogram name="Network.Shill.Wifi.PortalResult" enum="NetworkPortalResult"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
   <owner>hugobenichi@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
@@ -4374,7 +4371,7 @@
 
 <histogram name="Network.Shill.WiFi.RememberedNetworkCount" units="units"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network diagnostic metric sampling the number of 802.11 wireless
@@ -4387,7 +4384,7 @@
 <histogram
     name="Network.Shill.WiFi.RememberedSystemNetworkCount{ShillWiFiRememberedNetworkSecurityMode}"
     units="units" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of 802.11 wireless networks
@@ -4409,7 +4406,7 @@
 <histogram
     name="Network.Shill.WiFi.RememberedUserNetworkCount{ShillWiFiRememberedNetworkSecurityMode}"
     units="units" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric sampling the number of 802.11 wireless networks
@@ -4425,7 +4422,7 @@
 
 <histogram name="Network.Shill.WiFi.RoamComplete{RoamSecurityType}"
     enum="WiFiRoamComplete" expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric recording roam successes or failures. This is
@@ -4436,7 +4433,7 @@
 
 <histogram name="Network.Shill.WiFi.RoamTime{RoamSecurityType}" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric recording roam time in milliseconds. This is
@@ -4502,7 +4499,7 @@
 
 <histogram name="Network.Shill.WiFi.SessionLength{RoamSecurityType}" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric recording session length in milliseconds. This is
@@ -4532,7 +4529,7 @@
 
 <histogram name="Network.Shill.Wifi.SignalAtDisconnect" units="negative dBm"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network metric indicating the negative of the dBm received signal
@@ -4592,7 +4589,7 @@
 
 <histogram name="Network.Shill.WiFi.TimeResumeToReadyHB" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network performance metric sampling the time from the resume event
@@ -4604,7 +4601,7 @@
 
 <histogram name="Network.Shill.WiFi.TimeResumeToReadyLB" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network performance metric sampling the time from the resume event
@@ -4616,7 +4613,7 @@
 
 <histogram name="Network.Shill.WiFi.TimeResumeToReadyUHB" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
+  <owner>norvez@chromium.org</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
     ChromeOS network performance metric sampling the time from the resume event
@@ -4686,7 +4683,6 @@
 
 <histogram name="Network.Shill.Wifi.TimeToPortal" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
   <owner>hugobenichi@google.com</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
@@ -4698,7 +4694,6 @@
 
 <histogram name="Network.Shill.Wifi.TimeToRedirectFound" units="ms"
     expires_after="2025-12-31">
-  <owner>matthewmwang@chromium.org</owner>
   <owner>hugobenichi@google.com</owner>
   <owner>cros-network-metrics@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/optimization/enums.xml b/tools/metrics/histograms/metadata/optimization/enums.xml
index a87ce8e..fb19ea5 100644
--- a/tools/metrics/histograms/metadata/optimization/enums.xml
+++ b/tools/metrics/histograms/metadata/optimization/enums.xml
@@ -87,6 +87,18 @@
   <int value="5" label="[Deprecated] Host Model Features"/>
 </enum>
 
+<!-- Use following code to get the hash from the model version.
+import struct
+import hashlib
+version='2025.5.5.2308'
+struct.unpack('>L', hashlib.md5(version.encode('utf-8')).digest()[4:8])[0]
+-->
+
+<enum name="OnDeviceBaseModelVersion">
+  <summary>The versions for the foundational model</summary>
+  <int value="946907700" label="2025.5.5.2308"/>
+</enum>
+
 <enum name="OnDeviceModelAdaptationAvailability">
   <int value="0" label="Adaptation model was available"/>
   <int value="1" label="Base model was not available"/>
diff --git a/tools/metrics/histograms/metadata/optimization/histograms.xml b/tools/metrics/histograms/metadata/optimization/histograms.xml
index 79da50e..9e932f6 100644
--- a/tools/metrics/histograms/metadata/optimization/histograms.xml
+++ b/tools/metrics/histograms/metadata/optimization/histograms.xml
@@ -962,6 +962,26 @@
   <token key="ModelExecutionFeature" variants="ModelExecutionFeature"/>
 </histogram>
 
+<histogram name="OptimizationGuide.ModelExecution.OnDeviceBaseModelLoadResult"
+    enum="LoadPlatformModelStatus" expires_after="2025-10-12">
+  <owner>rajendrant@chromium.org</owner>
+  <owner>sophiechang@chromium.org</owner>
+  <summary>
+    Records the result of loading the base model, whether it succeeded or failed
+    with various reasons.
+  </summary>
+</histogram>
+
+<histogram name="OptimizationGuide.ModelExecution.OnDeviceBaseModelLoadVersion"
+    enum="OnDeviceBaseModelVersion" expires_after="2025-10-12">
+  <owner>rajendrant@chromium.org</owner>
+  <owner>sophiechang@chromium.org</owner>
+  <summary>
+    Records the hash code of base model version that is loaded. Recorded on
+    every load of the base model.
+  </summary>
+</histogram>
+
 <histogram
     name="OptimizationGuide.ModelExecution.OnDeviceContextFinishedProcessing.{ModelExecutionFeature}"
     enum="Boolean" expires_after="2025-06-27">
diff --git a/tools/metrics/histograms/metadata/page/histograms.xml b/tools/metrics/histograms/metadata/page/histograms.xml
index b84da91..772a983 100644
--- a/tools/metrics/histograms/metadata/page/histograms.xml
+++ b/tools/metrics/histograms/metadata/page/histograms.xml
@@ -239,6 +239,7 @@
   <variant name=".CustomizeChrome"/>
   <variant name=".DataSharingBubble"/>
   <variant name=".Emoji"/>
+  <variant name=".ExtensionsWebStoreZeroStatePromo"/>
   <variant name=".Feed"/>
   <variant name=".HistoryClustersSidePanel"/>
   <variant name=".HistorySidePanel"/>
diff --git a/tools/metrics/histograms/metadata/privacy/enums.xml b/tools/metrics/histograms/metadata/privacy/enums.xml
new file mode 100644
index 0000000..575bfeb
--- /dev/null
+++ b/tools/metrics/histograms/metadata/privacy/enums.xml
@@ -0,0 +1,564 @@
+<!--
+Copyright 2025 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+
+<!--
+
+This file describes the enumerations referenced by entries in histograms.xml for
+this directory. Some enums may instead be listed in the central enums.xml file
+at src/tools/metrics/histograms/enums.xml when multiple files use them.
+
+For best practices on writing enumerations descriptions, see
+https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms
+
+Please follow the instructions in the OWNERS file in this directory to find a
+reviewer. If no OWNERS file exists, please consider signing up at
+go/reviewing-metrics (Googlers only), as all subdirectories are expected to
+have an OWNERS file. As a last resort you can send the CL to
+chromium-metrics-reviews@google.com.
+-->
+
+<histogram-configuration>
+
+<!-- Enum types -->
+
+<enums>
+
+<enum name="AdsHeuristicCookieOverride">
+  <int value="0" label="kNone"/>
+  <int value="1" label="kNotAd"/>
+  <int value="2" label="kAny"/>
+  <int value="3" label="kSkipHeuristics"/>
+  <int value="4" label="kSkipMetadata"/>
+  <int value="5" label="kSkipSupport"/>
+  <int value="6" label="kSkipTopLevelSupport"/>
+</enum>
+
+<enum name="AggregationServiceObserverReportStatus">
+  <int value="0" label="Sent"/>
+  <int value="1" label="Failed to assemble"/>
+  <int value="2" label="Failed to send"/>
+</enum>
+
+<enum name="AntiFingerprintingBlockListResult">
+  <summary>
+    The possible results from checking a network resource URL against the
+    anti-fingerprinting blocklist.
+  </summary>
+  <int value="0" label="Third-party resource Blocked"/>
+  <int value="1" label="Third-party resource Allowed"/>
+  <int value="2" label="First-party resource Allowed"/>
+</enum>
+
+<enum name="ClearOnExitSyncEvent">
+  <int value="0" label="Profile startup, sync is disabled"/>
+  <int value="1" label="Profile startup, sync is paused"/>
+  <int value="2" label="Profile startup, sync is active"/>
+  <int value="3" label="Re-login to a sync paused account"/>
+  <int value="4" label="Logout of a sync paused account"/>
+  <int value="5"
+      label="Profile shutdown, sync is active, started paused, consent change"/>
+  <int value="6"
+      label="Profile shutdown, sync is active, started paused, no consent
+             change"/>
+  <int value="7"
+      label="Profile shutdown, sync is active, started active, consent change"/>
+  <int value="8"
+      label="Profile shutdown, sync is active, started active, no consent
+             change"/>
+  <int value="9" label="Profile shutdown, sync is paused"/>
+</enum>
+
+<enum name="ConsentAuditorFeature">
+  <int value="0" label="CHROME_SYNC"/>
+  <int value="1" label="PLAY_STORE"/>
+  <int value="2" label="BACKUP_AND_RESTORE"/>
+  <int value="3" label="GOOGLE_LOCATION_SERVICE"/>
+</enum>
+
+<!-- LINT.IfChange(ContentSettingPatternScope) -->
+
+<enum name="ContentSettingPatternScope">
+  <int value="0" label="Origin scoped"/>
+  <int value="1" label="With domain wildcard"/>
+  <int value="2" label="With port wildcard"/>
+  <int value="3" label="With scheme wildcard"/>
+  <int value="4" label="With scheme and port wildcard"/>
+  <int value="5" label="With domain and port wildcard"/>
+  <int value="6" label="With domain and scheme wildcard"/>
+  <int value="7" label="With domain and scheme and port wildcard"/>
+  <int value="8" label="Full wildcard"/>
+  <int value="9" label="File path"/>
+  <int value="10" label="Custom scope"/>
+</enum>
+
+<!-- LINT.ThenChange(//components/content_settings/core/common/content_settings_pattern.h:Scope) -->
+
+<!-- LINT.IfChange(CookieControlsMode) -->
+
+<enum name="CookieControlsMode">
+  <int value="0" label="Off"/>
+  <int value="1" label="BlockThirdParty"/>
+  <int value="2" label="IncognitoOnly"/>
+  <int value="3" label="Limited"/>
+</enum>
+
+<!-- LINT.ThenChange(//components/content_settings/core/browser/cookie_settings.h:CookieControlsMode, //chrome/browser/resources/settings/site_settings/constants.ts:CookieControlsMode) -->
+
+<enum name="CookieDeprecationFacilitatedTestingProfileEligibility">
+  <int value="0" label="Eligible"/>
+  <int value="1" label="Ineligible: 3P Cookies blocked"/>
+  <int value="2" label="Ineligible: Has not seen Ads API GA notice"/>
+  <int value="3" label="Ineligible: New user"/>
+  <int value="4" label="Ineligible: Enterprise user"/>
+  <int value="5" label="Ineligible: PWA or TWA installed on Android"/>
+  <int value="6" label="Eligible: Forced via kForceEligibleForTesting"/>
+</enum>
+
+<enum name="DeleteBrowsingDataAction">
+  <int value="0" label="CBD dialog"/>
+  <int value="1" label="Clear on exit"/>
+  <int value="2" label="Close Incognito tabs"/>
+  <int value="3" label="Cookies in use dialog"/>
+  <int value="4" label="Site settings page"/>
+  <int value="5" label="History Page Entries"/>
+  <int value="6" label="Quick delete"/>
+  <int value="7" label="Page info permission reset"/>
+  <int value="8" label="RWS delete all data"/>
+</enum>
+
+<!--LINT.IfChange(DeleteBrowsingDataDialogAction) -->
+
+<enum name="DeleteBrowsingDataDialogAction">
+  <int value="0" label="Browsing History Toggled On"/>
+  <int value="1" label="Browsing History Toggled Off"/>
+  <int value="2" label="Tabs Toggled On"/>
+  <int value="3" label="Tabs Toggled Off"/>
+  <int value="4" label="Site Data Toggled On"/>
+  <int value="5" label="Site Data Toggled Off"/>
+  <int value="6" label="Cache Toggled On"/>
+  <int value="7" label="Cache Toggled Off"/>
+  <int value="8" label="Passwords Toggled On"/>
+  <int value="9" label="Passwords Toggled Off"/>
+  <int value="10" label="Autofill Toggled On"/>
+  <int value="11" label="Autofill Toggled Off"/>
+  <int value="12" label="Confirm data type selection changes"/>
+  <int value="13" label="Cancel data type selection changes"/>
+  <int value="14" label="Sign out footer link opened"/>
+  <int value="15" label="Last 15 Minutes selected"/>
+  <int value="16" label="Last Hour selected"/>
+  <int value="17" label="Last day selected"/>
+  <int value="18" label="Last week selected"/>
+  <int value="19" label="Last four weeks selected"/>
+  <int value="20" label="Older than 30 days selected"/>
+  <int value="21" label="All time selected"/>
+  <int value="22" label="Browsing data row selected"/>
+  <int value="23" label="Search history link opened"/>
+  <int value="24" label="My Activity link opened"/>
+  <int value="25" label="Deletion selected"/>
+  <int value="26" label="Cancel selected"/>
+  <int value="27" label="Dialog dismissed implicitly"/>
+  <int value="28" label="Menu item entry point (i.e. three dot menu) selected"/>
+  <int value="29" label="History page entry point selected"/>
+  <int value="30" label="Privacy page entry point selected"/>
+  <int value="31" label="Keyboard entry point selected"/>
+</enum>
+
+<!--LINT.ThenChange(//components/browsing_data/core/browsing_data_utils.h:DeleteBrowsingDataDialogAction) -->
+
+<enum name="DIPSDeletionAction">
+  <int value="0" label="Disallowed"/>
+  <int value="1" label="ExceptedAs1p"/>
+  <int value="2" label="ExceptedAs3p"/>
+  <int value="3" label="Enforced"/>
+  <int value="4" label="Ignored: Due to empty site."/>
+  <int value="5" label="Excepted"/>
+</enum>
+
+<enum name="DIPSDirectNavigationSource">
+  <int value="0" label="Unknown"/>
+  <int value="1" label="Omnibar"/>
+  <int value="2" label="Bookmark"/>
+</enum>
+
+<enum name="DIPSErrorCode">
+  <int value="0" label="No DIPSDatabase::Read error was encountered"/>
+  <int value="1"
+      label="DIPSDatabase::Read Error: A range in the db has an open-range
+             (NULL, end]."/>
+  <int value="2"
+      label="DIPSDatabase::Read Error: A range in the db has an open-range
+             [start, NULL)."/>
+  <int value="3"
+      label="DIPSDatabase::Read Error: `bounce_times` doesn't fully contain
+             `stateful_bounce_times`."/>
+  <int value="4"
+      label="DIPSDatabase::Read Error: A query was made for an empty `site`;
+             db has an entry with an empty `site`."/>
+  <int value="5"
+      label="DIPSDatabase::Read Error: A query was made for an empty `site`;
+             db does not have an entry with an empty `site`."/>
+  <int value="6" label="No DIPSDatabase::Write error was encountered"/>
+  <int value="7" label="DIPSDatabase::Write Error: `site` is empty."/>
+</enum>
+
+<enum name="DIPSRedirectCategory">
+  <int value="0" label="No cookies accessed; no previous site engagement"/>
+  <int value="1" label="Cookies only read; no previous site engagement"/>
+  <int value="2" label="Cookies only written; no previous site engagement"/>
+  <int value="3" label="Cookies read and written; no previous site engagement"/>
+  <int value="4" label="No cookies accessed; site has previous engagement"/>
+  <int value="5" label="Cookies only read; site has previous engagement"/>
+  <int value="6" label="Cookies only written; site has previous engagement"/>
+  <int value="7"
+      label="Cookies read and written; site has previous engagement"/>
+  <int value="8" label="Unknown cookie access; no previous site engagement"/>
+  <int value="9" label="Unknown cookie access; site has previous engagement"/>
+</enum>
+
+<enum name="DIPSRedirectType">
+  <int value="0" label="Client redirect"/>
+  <int value="1" label="Server redirect"/>
+</enum>
+
+<!-- LINT.IfChange(PrivacySandboxActSurveyStatus) -->
+
+<enum name="PrivacySandboxActSurveyStatus">
+  <int value="0" label="Survey was successfully launched"/>
+  <int value="1" label="Feature not enabled"/>
+  <int value="2" label="Failed to fetch HaTS service"/>
+  <int value="3" label="Failed to launch survey"/>
+  <int value="4" label="Not in Incognito profile"/>
+</enum>
+
+<!-- LINT.ThenChange(/chrome/browser/privacy_sandbox/incognito/privacy_sandbox_incognito_survey_service.h:PrivacySandboxActSurveyStatus) -->
+
+<enum name="PrivacySandboxAggregationServiceKeyFetcherStatus">
+  <int value="0" label="Success"/>
+  <int value="1" label="Download error"/>
+  <int value="2" label="Json parse error"/>
+  <int value="3" label="Invalid key error"/>
+  <int value="4" label="Expired key error"/>
+</enum>
+
+<enum name="PrivacySandboxAggregationServiceReportAssemblerStatus">
+  <int value="0" label="Ok"/>
+  <int value="1" label="Public key fetch error"/>
+  <int value="2" label="Assembly error"/>
+  <int value="3" label="Too many requests error"/>
+</enum>
+
+<enum name="PrivacySandboxAggregationServiceReportSenderStatus">
+  <int value="0" label="Ok"/>
+  <int value="1" label="Network error"/>
+  <int value="2" label="Server error"/>
+</enum>
+
+<enum name="PrivacySandboxAggregationServiceStorageSqlInitStatus">
+  <int value="0" label="Success"/>
+  <int value="1" label="Failed to open DB in memory"/>
+  <int value="2" label="Failed to open DB file"/>
+  <int value="3" label="Failed to create directory"/>
+  <int value="4" label="Failed to initialize schema"/>
+</enum>
+
+<enum name="PrivacySandboxApiAllowed">
+  <int value="0" label="Allowed"/>
+  <int value="1" label="Restricted"/>
+  <int value="2" label="Incognito profile"/>
+  <int value="3" label="Apis disabled"/>
+  <int value="4" label="Site data access blocked"/>
+  <int value="5" label="Mismatched Consent"/>
+  <int value="6" label="Attestation failed"/>
+  <int value="7"
+      label="Deprecated. Component installer has not yet checked the
+             attestations file, or attestations file not present"/>
+  <int value="8" label="Attestations downloaded, not yet loaded"/>
+  <int value="9" label="Attestations file corrupt"/>
+  <int value="10" label="Protected Audience joining blocked due to top frame"/>
+  <int value="11"
+      label="Disabled by third-party cookie deprecation experiment"/>
+  <int value="12"
+      label="Component installer has not yet checked the attestations file"/>
+  <int value="13" label="Attestations file not present"/>
+</enum>
+
+<enum name="PrivacySandboxAttestationLoadAPKAssetStatus">
+  <int value="0" label="Success"/>
+  <int value="1" label="Fail to open the attestations list from APK assets"/>
+  <int value="2"
+      label="Fail to create a memory mapped file of the attestations list
+             from APK assets"/>
+  <int value="3" label="Fail to parse the content of the attestations list"/>
+</enum>
+
+<enum name="PrivacySandboxAttestationParsingStatus">
+  <int value="0" label="Success"/>
+  <int value="1" label="NotNewerVersion"/>
+  <int value="2" label="FileNotExist"/>
+  <int value="3" label="SentinelFilePresent"/>
+  <int value="4" label="CannotCreateSentinel"/>
+  <int value="5" label="CannotRemoveSentinel"/>
+  <int value="6" label="CannotParseFile"/>
+</enum>
+
+<enum name="PrivacySandboxAttestationsFileSource">
+  <int value="0" label="Pre-installed"/>
+  <int value="1" label="Downloaded"/>
+</enum>
+
+<!-- LINT.IfChange(PrivacySandboxCctAdsNoticeSurveyFailures) -->
+
+<enum name="PrivacySandboxCctAdsNoticeSurveyFailures">
+  <int value="0" label="Feature not enabled"/>
+  <int value="1" label="App ID mismatch"/>
+  <int value="2" label="No notice interaction found"/>
+  <int value="3" label="Invalid prompt type found"/>
+  <int value="4" label="Failed to find survey config for EEA accepted"/>
+  <int value="5" label="Failed to find survey config for EEA declined"/>
+  <int value="6" label="Failed to find survey config for EEA control"/>
+  <int value="7" label="Failed to find survey config for ROW acknowledged"/>
+  <int value="8" label="Failed to find survey config for ROW control"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java:PrivacySandboxCctAdsNoticeSurveyFailures) -->
+
+<!-- LINT.IfChange(PrivacySandboxDialogCallbackState) -->
+
+<enum name="PrivacySandboxDialogCallbackState">
+  <int value="0" label="SingleActionCallbackDNE"/>
+  <int value="1" label="MultiActionCallbackDNE"/>
+  <int value="2" label="CallbackUnknownBeforeShown"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler.h:PrivacySandboxDialogCallbackState) -->
+
+<!-- LINT.IfChange(PrivacySandboxNoticeAction) -->
+
+<enum name="PrivacySandboxNoticeAction">
+  <int value="0" label="NotSet"/>
+  <int value="1" label="Ack"/>
+  <int value="2" label="Closed"/>
+  <int value="3" label="LearnMore"/>
+  <int value="4" label="OptIn"/>
+  <int value="5" label="OptOut"/>
+  <int value="6" label="Other"/>
+  <int value="7" label="Settings"/>
+  <int value="8" label="UnknownActionPreMigration"/>
+  <int value="9" label="TimedOut"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/privacy_sandbox/notice/notice_storage.h:NoticeActionTaken) -->
+
+<!-- LINT.IfChange(PrivacySandboxNoticeActionBehavior) -->
+
+<enum name="PrivacySandboxNoticeActionBehavior">
+  <int value="0" label="Success"/>
+  <int value="1" label="ActionBeforeShown"/>
+  <int value="2" label="DuplicateActionTaken"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/privacy_sandbox/notice/notice_storage.h:NoticeActionBehavior) -->
+
+<!-- LINT.IfChange(PrivacySandboxNoticeEvent) -->
+
+<enum name="PrivacySandboxNoticeEvent">
+  <int value="0" label="Ack"/>
+  <int value="1" label="Closed"/>
+  <int value="2" label="OptIn"/>
+  <int value="3" label="OptOut"/>
+  <int value="4" label="Settings"/>
+  <int value="5" label="Shown"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/privacy_sandbox/notice/notice.mojom:PrivacySandboxNoticeEvent) -->
+
+<enum name="PrivacySandboxPrimaryAccountUserGroups">
+  <int value="0" label="NotSet"/>
+  <int value="1" label="SignedOut"/>
+  <int value="2" label="SignedInCapabilityFalse"/>
+  <int value="3" label="SignedInCapabilityTrue"/>
+  <int value="4" label="SignedInCapabilityUnknown"/>
+</enum>
+
+<!-- LINT.IfChange(PrivacySandboxPrimaryAccountUserGroups) -->
+
+<enum name="PrivacySandboxPrivateAggregationBudgeterBudgetValidityStatus2">
+  <int value="0" label="Valid"/>
+  <int value="1" label="Valid but empty; no budget data stored"/>
+  <int value="2"
+      label="Valid but contains an entry with a stale entry, i.e. a window
+             from over a day ago"/>
+  <int value="3" label="Contains a value with a timestamp in the future"/>
+  <int value="4"
+      label="Contains a value with a value that exceeds the budget limit"/>
+  <int value="5"
+      label="Contains an entry with a timestamp that is not rounded to a
+             minute"/>
+  <int value="6" label="Contains budget data that spans more than a day"/>
+  <int value="7" label="Contains an entry with a nonpositive budget value"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/privacy_sandbox/privacy_sandbox_service.h:PrimaryAccountUserGroups) -->
+
+<enum name="PrivacySandboxPrivateAggregationBudgeterRequestResult3">
+  <int value="0" label="Approved"/>
+  <int value="1" label="Insufficient budget left in 10-min scope"/>
+  <int value="2" label="Insufficient budget left in daily scope"/>
+  <int value="3" label="Requested more than total budget"/>
+  <int value="4" label="Too many pending calls"/>
+  <int value="5" label="Storage initialization failed"/>
+  <int value="6" label="Bad values on disk"/>
+</enum>
+
+<enum name="PrivacySandboxPrivateAggregationBudgetStorageInitStatus">
+  <int value="0" label="Success"/>
+  <int value="1" label="Failed to open DB in memory"/>
+  <int value="2" label="Failed to open DB file"/>
+  <int value="3" label="Failed to create directory"/>
+</enum>
+
+<enum name="PrivacySandboxPrivateAggregationHostFilteringIdStatus">
+  <int value="0" label="No filtering ID, default max bytes"/>
+  <int value="1" label="Filtering ID provided, default max bytes"/>
+  <int value="2" label="No filtering ID, custom max bytes"/>
+  <int value="3" label="Filtering ID provided, custom max bytes"/>
+</enum>
+
+<enum name="PrivacySandboxPrivateAggregationHostPipeResult">
+  <int value="0" label="Report success"/>
+  <int value="1"
+      label="Report success but truncated due to too many contributions"/>
+  <int value="2" label="No report, but no error"/>
+  <int value="3" label="API disabled in settings"/>
+  <int value="4" label="Enable debug mode called multiple times"/>
+  <int value="5" label="Negative value"/>
+  <int value="6" label="Filtering ID invalid"/>
+  <int value="7" label="Necessary feature not enabled"/>
+</enum>
+
+<enum name="PrivacySandboxPrivateAggregationHostTimeoutResult">
+  <int value="0" label="Occurred before remote disconnection"/>
+  <int value="1" label="Occurred after remote disconnection"/>
+  <int value="2" label="Canceled due to error"/>
+  <int value="3" label="Still scheduled on shutdown"/>
+</enum>
+
+<enum name="PrivacySandboxPrivateAggregationManagerRequestResult">
+  <int value="0" label="Sent with contributions"/>
+  <int value="1" label="Sent without contributions"/>
+  <int value="2" label="Sent but contributions cleared due to budget denial"/>
+  <int value="3" label="Not sent"/>
+</enum>
+
+<!-- LINT.IfChange(PrivacySandboxPrivateAggregationTruncationResult) -->
+
+<enum name="PrivacySandboxPrivateAggregationTruncationResult">
+  <int value="0" label="No truncation occurred"/>
+  <int value="1"
+      label="Truncation occurred with the unconditional contributions alone
+             exceeding the limit"/>
+  <int value="2"
+      label="Truncation occurred but the unconditional contributions alone
+             did not exceed the limit"/>
+</enum>
+
+<!-- LINT.ThenChange(//content/browser/private_aggregation/private_aggregation_pending_contributions.h:TruncationResult) -->
+
+<!-- LINT.IfChange(PrivacySandboxPromptSuppressionReason) -->
+
+<enum name="PrivacySandboxPromptSuppressionReason">
+<!-- Used as a bitfield so values must be ascending powers of 2 -->
+
+  <int value="0" label="None"/>
+  <int value="1" label="3PC_Blocked"/>
+  <int value="2" label="CapabilityFalse"/>
+  <int value="4" label="ManagedDevice"/>
+  <int value="8" label="NoticeShownBefore"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/browser/privacy_sandbox/privacy_sandbox_service.h:FakeNoticePromptSuppressionReason) -->
+
+<!-- LINT.IfChange(PrivacySandboxSentimentSurveyStatus) -->
+
+<enum name="PrivacySandboxSentimentSurveyStatus">
+  <int value="0" label="Survey was successfully launched"/>
+  <int value="1" label="Feature not enabled"/>
+  <int value="2" label="Failed to fetch HaTS service"/>
+  <int value="3" label="Failed to launch survey"/>
+  <int value="4" label="Failed to find survey config"/>
+</enum>
+
+<!-- LINT.ThenChange(//components/privacy_sandbox/privacy_sandbox_survey_service.h:PrivacySandboxSentimentSurveyStatus) -->
+
+<enum name="PrivacySandboxStorageActivityType">
+  <int value="0" label="Received kOther (partial CCT or unknown) type"/>
+  <int value="1" label="Received kTabbed (BrowserApp) type"/>
+  <int value="2" label="Received kAGSACustomTab type"/>
+  <int value="3" label="Received kNonAGSACustomTab type"/>
+  <int value="4" label="Received kTrustedWebActivity type"/>
+  <int value="5" label="Received kWebapp type"/>
+  <int value="6" label="Received kWebApk type"/>
+  <int value="7" label="Received kPreFirstTab type"/>
+</enum>
+
+<enum name="PrivacySandboxStorageUserSegmentByRecentActivity">
+  <int value="0" label="kHasOther"/>
+  <int value="1" label="kHasBrowserApp"/>
+  <int value="2" label="kHasAGSACCT"/>
+  <int value="3" label="kHasNonAGSACCT"/>
+  <int value="4" label="kHasPWA"/>
+  <int value="5" label="kHasTWA"/>
+  <int value="6" label="kHasWebapp"/>
+  <int value="7" label="kHasPreFirstTab"/>
+</enum>
+
+<!-- LINT.IfChange(PrivacySandboxSurveyTypesEnums) -->
+
+<enum name="PrivacySandboxSurveyTypes">
+  <int value="0" label="Unknown Survey"/>
+  <int value="1" label="Sentiment Survey"/>
+  <int value="2" label="Accepted EEA Survey"/>
+  <int value="3" label="Declined EEA Survey"/>
+  <int value="4" label="Control EEA Survey"/>
+  <int value="5" label="Acknowledged ROW Survey"/>
+  <int value="6" label="Control ROW Survey"/>
+</enum>
+
+<!-- LINT.ThenChange(//chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java:PrivacySandboxSurveyTypes) -->
+
+<enum name="QuickDeleteAction">
+  <int value="0" label="Entry from menu item clicked"/>
+  <int value="1" label="Delete button on dialog clicked"/>
+  <int value="2" label="Cancel button on dialog clicked"/>
+  <int value="3"
+      label="Dialog dismissed due to reasons other than Cancel or Delete"/>
+  <int value="4" label="Entry from tab switcher menu item clicked"/>
+  <int value="5" label="More options button on dialog clicked"/>
+  <int value="6" label="My activity link on dialog clicked"/>
+  <int value="7" label="Search history link on dialog clicked"/>
+  <int value="8" label="last 15 minutes deletion time range selected"/>
+  <int value="9" label="last hour minutes deletion time range selected"/>
+  <int value="10" label="last day minutes deletion time range selected"/>
+  <int value="11" label="last week minutes deletion time range selected"/>
+  <int value="12" label="last four weeks deletion time range selected"/>
+  <int value="13" label="All time deletion time range selected"/>
+</enum>
+
+<enum name="SecCookieDeprecationHeaderStatus">
+  <int value="0" label="kSet"/>
+  <int value="1" label="kNoLabel"/>
+  <int value="2" label="kNoCookie"/>
+</enum>
+
+<enum name="ThirdPartySiteDataAccessType">
+  <int value="0" label="Any blocked third-party site data accesses"/>
+  <int value="1" label="Any allowed third-party site data accesses"/>
+  <int value="2" label="No third-party site data accesses"/>
+</enum>
+
+</enums>
+
+</histogram-configuration>
diff --git a/tools/metrics/histograms/metadata/settings/histograms.xml b/tools/metrics/histograms/metadata/settings/histograms.xml
index a4be133..bba7139 100644
--- a/tools/metrics/histograms/metadata/settings/histograms.xml
+++ b/tools/metrics/histograms/metadata/settings/histograms.xml
@@ -850,6 +850,54 @@
 </histogram>
 
 <histogram
+    name="Settings.SafetyHub.DisruptiveNotificationRevocations.DailyDistribution.{RevocationState}.SiteEngagement"
+    units="EngagementScore" expires_after="2026-02-26">
+  <owner>olesiamarukhnno@google.com</owner>
+  <owner>antoniosartori@chromium.org</owner>
+  <summary>
+    Records the site engagement for revoked disruptive notification sites.
+    Recorded on every run of the disruptive notification sites Safety Hub check.
+  </summary>
+  <token key="RevocationState">
+    <variant name="Acknowledged"/>
+    <variant name="Proposed"/>
+    <variant name="Regranted"/>
+    <variant name="Revoked"/>
+  </token>
+</histogram>
+
+<histogram
+    name="Settings.SafetyHub.DisruptiveNotificationRevocations.DailyDistribution.{RevocationState}.SiteEngagement{SiteEngagement}.DaysSinceRevocation"
+    units="days" expires_after="2026-02-26">
+  <owner>olesiamarukhnno@google.com</owner>
+  <owner>antoniosartori@chromium.org</owner>
+  <summary>
+    Records the number of days since revocation for revoked disruptive
+    notification sites, and their current state and site engagement. Recorded on
+    every run of the disruptive notification sites Safety Hub check. For
+    proposed revocation, days are computed since the proposal.
+  </summary>
+  <token key="RevocationState">
+    <variant name="Acknowledged"/>
+    <variant name="Proposed"/>
+    <variant name="Regranted"/>
+    <variant name="Revoked"/>
+  </token>
+  <token key="SiteEngagement">
+    <variant name="0"/>
+    <variant name="1"/>
+    <variant name="2"/>
+    <variant name="3"/>
+    <variant name="4"/>
+    <variant name="5"/>
+    <variant name="6-7"/>
+    <variant name="8-10"/>
+    <variant name="11-15"/>
+    <variant name="&gt;15"/>
+  </token>
+</histogram>
+
+<histogram
     name="Settings.SafetyHub.DisruptiveNotificationRevocations.FalsePositive.SiteEngagement"
     units="EngagementScore" expires_after="2026-02-26">
   <owner>olesiamarukhnno@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/ui/enums.xml b/tools/metrics/histograms/metadata/ui/enums.xml
index 205ce25..bb78a4f9 100644
--- a/tools/metrics/histograms/metadata/ui/enums.xml
+++ b/tools/metrics/histograms/metadata/ui/enums.xml
@@ -725,6 +725,7 @@
   <int value="-485494550" label="chrome://interventions-internals/"/>
   <int value="-451371558" label="chrome://serviceworker-internals/"/>
   <int value="-443189279" label="chrome://enterprise-profile-welcome/"/>
+  <int value="-412283693" label="chrome://extensions-zero-state/"/>
   <int value="-407160627" label="chrome://on-device-translation-internals/"/>
   <int value="-394586044" label="chrome://confirm-password-change/"/>
   <int value="-377028639" label="chrome://copresence/"/>
diff --git a/tools/metrics/histograms/metadata/ui/histograms.xml b/tools/metrics/histograms/metadata/ui/histograms.xml
index 36fd60f..4ccc2b5 100644
--- a/tools/metrics/histograms/metadata/ui/histograms.xml
+++ b/tools/metrics/histograms/metadata/ui/histograms.xml
@@ -60,6 +60,7 @@
   <variant name=".CustomizeChrome"/>
   <variant name=".DataSharingBubble"/>
   <variant name=".Emoji"/>
+  <variant name=".ExtensionsWebStoreZeroStatePromo"/>
   <variant name=".Feed"/>
   <variant name=".HistoryClustersSidePanel"/>
   <variant name=".HistorySidePanel"/>
diff --git a/tools/metrics/histograms/metadata/windows/histograms.xml b/tools/metrics/histograms/metadata/windows/histograms.xml
index 7787c1a..c487862 100644
--- a/tools/metrics/histograms/metadata/windows/histograms.xml
+++ b/tools/metrics/histograms/metadata/windows/histograms.xml
@@ -165,6 +165,38 @@
   </summary>
 </histogram>
 
+<histogram name="Windows.InstallerDownloader.DownloadSucceed" enum="Boolean"
+    expires_after="2025-12-31">
+  <owner>koretadaniel@chromium.org</owner>
+  <owner>top-chrome-desktop-ui@google.com</owner>
+  <summary>
+    Outcome of the download that runs after the user accepts: true for a fully
+    completed download, false for any failure or interruption. Logged once per
+    download attempt.
+  </summary>
+</histogram>
+
+<histogram name="Windows.InstallerDownloader.InfobarShown" enum="Boolean"
+    expires_after="2025-12-31">
+  <owner>koretadaniel@chromium.org</owner>
+  <owner>top-chrome-desktop-ui@google.com</owner>
+  <summary>
+    Logged once per browser session when the Installer Downloader infobar is
+    displayed for the first time. Always true, since the metric records how
+    often the prompt surfaces.
+  </summary>
+</histogram>
+
+<histogram name="Windows.InstallerDownloader.RequestAccepted" enum="Boolean"
+    expires_after="2025-12-31">
+  <owner>koretadaniel@chromium.org</owner>
+  <owner>top-chrome-desktop-ui@google.com</owner>
+  <summary>
+    Records the user’s response to the infobar. Logged exactly once per prompt:
+    - true: user accepted the prompt. - false: user dismissed the prompt.
+  </summary>
+</histogram>
+
 <histogram name="Windows.InstallerPinUnpinned" enum="IsPinnedToTaskbarResult"
     expires_after="2023-11-12">
   <owner>davidbienvenu@chromium.org</owner>
@@ -338,6 +370,17 @@
   </summary>
 </histogram>
 
+<histogram name="Windows.TaskbarPinFromFRESucceeded" enum="Boolean"
+    expires_after="2025-12-01">
+  <owner>davidbienvenu@chromium.org</owner>
+  <owner>jessemckenna@google.com</owner>
+  <summary>
+    The result of calling PinAppToTaskbar() in the first run experience, logged
+    when it is called. It is called when the user has agreed to set Chrome as
+    the default browser and pin Chrome to the taskbar.
+  </summary>
+</histogram>
+
 <histogram name="Windows.TaskbarPinResult" enum="TaskbarPinResult"
     expires_after="2025-12-01">
   <owner>davidbienvenu@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 6563386..60985fb1 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -6,7 +6,7 @@
         },
         "win": {
             "hash": "51a7438fd3099888e9543e8b1360318c556c3573",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/72b133f729dcf236741d7224406c44b1615760f4/trace_processor_shell.exe"
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/7e5757999c0e9f06b12c33bf4d861cc0ff10ed8c/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "99f971ca131f6d11c73f4b918099d434bdd8093c",
@@ -21,8 +21,8 @@
             "full_remote_path": "perfetto-luci-artifacts/v50.1/mac-arm64/trace_processor_shell"
         },
         "linux": {
-            "hash": "1f6f5eec2d61555c5c0cbc6bb26503dd5cc99d4b",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/72b133f729dcf236741d7224406c44b1615760f4/trace_processor_shell"
+            "hash": "48b1a4909b4df12760653f09a084984e1a97c166",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/6281f236ce89284e6c468dfd78d0eb0c595531fe/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/ui/android/java/src/org/chromium/ui/interpolators/Interpolators.java b/ui/android/java/src/org/chromium/ui/interpolators/Interpolators.java
index c4f8efb..bab6e695 100644
--- a/ui/android/java/src/org/chromium/ui/interpolators/Interpolators.java
+++ b/ui/android/java/src/org/chromium/ui/interpolators/Interpolators.java
@@ -28,9 +28,10 @@
     // that mimics a spring.
     public static final Interpolator DEFAULT_SPATIAL =
             PathInterpolatorCompat.create(0.38f, 1.21f, 0.22f, 1f);
+    public static final Interpolator STANDARD_DEFAULT_EFFECTS =
+            PathInterpolatorCompat.create(0.34f, 0.80f, 0.34f, 1f);
     public static final Interpolator STANDARD_ACCELERATE =
             PathInterpolatorCompat.create(0.3f, 0f, 1f, 1f);
-
     public static final AccelerateInterpolator ACCELERATE_INTERPOLATOR =
             new AccelerateInterpolator();
     public static final DecelerateInterpolator DECELERATE_INTERPOLATOR =
diff --git a/ui/gfx/gpu_memory_buffer.cc b/ui/gfx/gpu_memory_buffer.cc
index a481e02b..3e20b83 100644
--- a/ui/gfx/gpu_memory_buffer.cc
+++ b/ui/gfx/gpu_memory_buffer.cc
@@ -89,7 +89,7 @@
     base::UnsafeSharedMemoryRegion region)
     : type(GpuMemoryBufferType::SHARED_MEMORY_BUFFER),
       region_(std::move(region)) {
-  CHECK(region_.IsValid(), base::NotFatalUntil::M138);
+  CHECK(region_.IsValid(), base::NotFatalUntil::M141);
 }
 
 #if BUILDFLAG(IS_WIN)
diff --git a/ui/views/controls/image_view.cc b/ui/views/controls/image_view.cc
index 22084ad..25cdc3fb 100644
--- a/ui/views/controls/image_view.cc
+++ b/ui/views/controls/image_view.cc
@@ -12,9 +12,11 @@
 #include "base/trace_event/trace_event.h"
 #include "cc/paint/paint_flags.h"
 #include "skia/ext/image_operations.h"
+#include "third_party/skia/include/core/SkPath.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
 #include "ui/base/themed_vector_icon.h"
 #include "ui/gfx/canvas.h"
+#include "ui/gfx/geometry/skia_conversions.h"
 #include "ui/gfx/image/image_skia_rep.h"
 #include "ui/gfx/paint_vector_icon.h"
 
@@ -50,11 +52,26 @@
   return image_size_.value_or(image_model_.Size());
 }
 
+void ImageView::SetCornerRadius(int corner_radius) {
+  corner_radius_ = corner_radius;
+}
+
+int ImageView::GetCornerRadius() const {
+  return corner_radius_;
+}
+
 void ImageView::OnPaint(gfx::Canvas* canvas) {
   // This inlines View::OnPaint in order to OnPaintBorder() after OnPaintImage
   // so the border can paint over content (for rounded corners that overlap
   // content).
   TRACE_EVENT1("views", "ImageView::OnPaint", "class", GetClassName());
+  if (corner_radius_) {
+    SkPath mask;
+    mask.addRoundRect(gfx::RectToSkRect(GetImageBounds()), corner_radius_,
+                      corner_radius_);
+    canvas->ClipPath(mask, true);
+  }
+
   OnPaintBackground(canvas);
   OnPaintImage(canvas);
   OnPaintBorder(canvas);
diff --git a/ui/views/controls/image_view.h b/ui/views/controls/image_view.h
index 0b8a0b4..5b36ba7 100644
--- a/ui/views/controls/image_view.h
+++ b/ui/views/controls/image_view.h
@@ -50,6 +50,10 @@
 
   ui::ImageModel GetImageModel() const;
 
+  // Set or get the `corner_radius`.
+  void SetCornerRadius(int corner_radius);
+  int GetCornerRadius() const;
+
   // Overridden from View:
   void OnPaint(gfx::Canvas* canvas) override;
 
@@ -79,10 +83,13 @@
 
   // Caches the scaled image reps.
   gfx::ImageSkia scaled_image_;
+
+  int corner_radius_ = 0;
 };
 
 BEGIN_VIEW_BUILDER(VIEWS_EXPORT, ImageView, ImageViewBase)
 VIEW_BUILDER_OVERLOAD_METHOD(SetImage, const ui::ImageModel&)
+VIEW_BUILDER_PROPERTY(int, CornerRadius)
 END_VIEW_BUILDER
 
 }  // namespace views
diff --git a/ui/views/widget/widget_delegate.h b/ui/views/widget/widget_delegate.h
index febaf77b..d2011a5 100644
--- a/ui/views/widget/widget_delegate.h
+++ b/ui/views/widget/widget_delegate.h
@@ -363,6 +363,13 @@
     // The widget's title, if any.
     // TODO(ellyjones): Should it be illegal to have show_title && !title?
     std::u16string title;
+
+    // If set to true, force using desktop widget (DesktopNativeWidgetAura).
+    // Otherwise, widget type is determined automatically.
+    // This is used for child widgets on Desktop Aura (i.e. Windows and Linux)
+    // when they need to be rendered beyond their parent window's boundary.
+    // This setting has no effect on other platforms (e.g. ChromeOS or macOS).
+    bool use_desktop_widget_override = false;
   };
 
   class OwnedByWidgetPassKey {
@@ -814,6 +821,13 @@
   void set_internal_name(std::string name) { params_.internal_name = name; }
   std::string internal_name() const { return params_.internal_name; }
 
+  void set_use_desktop_widget_override(bool use_desktop_widget_override) {
+    params_.use_desktop_widget_override = use_desktop_widget_override;
+  }
+  bool use_desktop_widget_override() {
+    return params_.use_desktop_widget_override;
+  }
+
   bool has_desired_bounds_delegate() const {
     return static_cast<bool>(params_.desired_bounds_delegate);
   }
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
index 95f3a677..20f12f5 100644
--- a/ui/views/window/dialog_client_view.cc
+++ b/ui/views/window/dialog_client_view.cc
@@ -28,6 +28,7 @@
 #include "ui/views/controls/button/checkbox.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/controls/button/md_text_button.h"
+#include "ui/views/layout/flex_layout.h"
 #include "ui/views/layout/layout_provider.h"
 #include "ui/views/layout/table_layout.h"
 #include "ui/views/metadata/view_factory.h"
@@ -41,6 +42,14 @@
 
 namespace views {
 
+namespace features {
+// Gates the ability of the Dialog to use a vertical button layout, if other
+// conditions permit. This is a killswitch and is on by default.
+BASE_FEATURE(kDialogVerticalButtonFallback,
+             "DialogVerticalButtonFallback",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+}  // namespace features
+
 namespace {
 
 // The group used by the buttons.  This name is chosen voluntarily big not to
@@ -430,6 +439,22 @@
   return {{first, second, third}};
 }
 
+std::vector<View*> DialogClientView::GetButtonColumnViews() const {
+  // Note: Unlike the horizontal layout, the Okay button is always at the
+  // bottom, independent of platform-specific style.
+  std::vector<View*> views;
+  if (ShouldShow(extra_view_)) {
+    views.push_back(extra_view_.get());
+  }
+  if (cancel_button_) {
+    views.push_back(cancel_button_);
+  }
+  if (ok_button_) {
+    views.push_back(ok_button_);
+  }
+  return views;
+}
+
 void DialogClientView::UpdateExtraViewFromDelegate() {
   // DisownExtraView() returns nullopt if the extra view was not updated.
   auto maybe_new_extra_view = GetDialogDelegate()->DisownExtraView();
@@ -468,16 +493,9 @@
   UpdateExtraViewFromDelegate();
 
   std::array<View*, kNumButtons> views = GetButtonRowViews();
-
   if (std::ranges::count(views, nullptr) == kNumButtons) {
     return;
   }
-
-  // This will also clobber any existing layout manager and clear any settings
-  // it may already have.
-  auto* layout = button_row_container_->SetLayoutManager(
-      std::make_unique<views::TableLayout>());
-  layout->SetMinimumSize(minimum_size_);
   if (extra_view_) {
     // TableLayout will force its child views to be visible if they aren't
     // explicitly ignored, which will cause the extra view the client supplied
@@ -487,6 +505,36 @@
                              !extra_view_->GetVisible());
   }
 
+  // Attempt to lay out the buttons horizontally. If the width of the resulting
+  // layout exceeds the specified fixed width of the dialog, conditionally
+  // use a vertical button layout instead, to minimize horizontal growth.
+  SetupHorizontalLayout();
+  const int fixed_width = GetDialogDelegate()->fixed_width();
+  if (GetDialogDelegate()->allow_vertical_buttons() &&
+      base::FeatureList::IsEnabled(
+          views::features::kDialogVerticalButtonFallback) &&
+      ShouldShow(extra_view_) && fixed_width &&
+      button_row_container_->GetPreferredSize({}).width() > fixed_width) {
+    SetupVerticalLayout();
+  }
+
+  // The default focus is lost when child views are added back into the
+  // dialog. This restores focus if the button is still available.
+  View* previously_focused_view = view_tracker.view();
+  if (previously_focused_view && !focus_manager->GetFocusedView() &&
+      Contains(previously_focused_view)) {
+    previously_focused_view->RequestFocus();
+  }
+}
+
+void DialogClientView::SetupHorizontalLayout() {
+  std::array<View*, kNumButtons> views = GetButtonRowViews();
+  CHECK(std::ranges::count(views, nullptr) != kNumButtons);
+
+  auto* layout = button_row_container_->SetLayoutManager(
+      std::make_unique<views::TableLayout>());
+  layout->SetMinimumSize(minimum_size_);
+
   // The |resize_percent| constants. There's only one stretchy column (padding
   // to the left of ok/cancel buttons).
   constexpr float kFixed = views::TableLayout::kFixedSize;
@@ -547,14 +595,26 @@
     }
     layout->LinkColumnSizes(cols);
   }
+}
 
-  // The default focus is lost when child views are added back into the dialog.
-  // This restores focus if the button is still available.
-  View* previously_focused_view = view_tracker.view();
-  if (previously_focused_view && !focus_manager->GetFocusedView() &&
-      Contains(previously_focused_view)) {
-    previously_focused_view->RequestFocus();
+void DialogClientView::SetupVerticalLayout() {
+  auto views = GetButtonColumnViews();
+  CHECK_GT(views.size(), 0u);
+
+  for (size_t i = 0; i < views.size(); ++i) {
+    button_row_container_->ReorderChildView(views[i], i);
   }
+
+  button_row_container_->SetLayoutManager(std::make_unique<views::FlexLayout>())
+      ->SetOrientation(views::LayoutOrientation::kVertical)
+      .SetMainAxisAlignment(views::LayoutAlignment::kCenter)
+      .SetCrossAxisAlignment(views::LayoutAlignment::kStretch)
+      .SetInteriorMargin(button_row_insets_)
+      .SetCollapseMargins(true)
+      .SetDefault(kMarginsKey,
+                  gfx::Insets::VH(LayoutProvider::Get()->GetDistanceMetric(
+                                      DISTANCE_RELATED_CONTROL_VERTICAL),
+                                  0));
 }
 
 void DialogClientView::UpdateButtonsFromModel() {
diff --git a/ui/views/window/dialog_client_view.h b/ui/views/window/dialog_client_view.h
index 2a55767..a3623018 100644
--- a/ui/views/window/dialog_client_view.h
+++ b/ui/views/window/dialog_client_view.h
@@ -5,8 +5,10 @@
 #ifndef UI_VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
 #define UI_VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
 
+#include <array>
 #include <memory>
 #include <utility>
+#include <vector>
 
 #include "base/gtest_prod_util.h"
 #include "base/memory/raw_ptr.h"
@@ -27,6 +29,10 @@
 class MdTextButton;
 class Widget;
 
+namespace features {
+VIEWS_EXPORT BASE_DECLARE_FEATURE(kDialogVerticalButtonFallback);
+}
+
 // DialogClientView provides adornments for a dialog's content view, including
 // custom-labeled [OK] and [Cancel] buttons with [Enter] and [Esc] accelerators.
 // The view also displays the delegate's extra view alongside the buttons. The
@@ -159,9 +165,19 @@
   // a View should not appear, it will be null.
   std::array<View*, kNumButtons> GetButtonRowViews();
 
+  // Returns Views in column order. This is used when the buttons don't fit in
+  // a row, and the buttons are laid out vertically instead.
+  std::vector<View*> GetButtonColumnViews() const;
+
   // Installs and configures the LayoutManager for `button_row_container_`.
   void SetupLayout();
 
+  // Horizontal and vertical variations of button layout logic. The vertical
+  // layout is utilized if the horizontal layout exceeds a maximum width
+  // criteria.
+  void SetupHorizontalLayout();
+  void SetupVerticalLayout();
+
   // Creates or deletes any buttons that are required. Updates data members.
   // After calling this, no button row Views will be in the view hierarchy.
   void UpdateButtonsFromModel();
diff --git a/ui/views/window/dialog_client_view_unittest.cc b/ui/views/window/dialog_client_view_unittest.cc
index 1643b4a..ddc3bb9 100644
--- a/ui/views/window/dialog_client_view_unittest.cc
+++ b/ui/views/window/dialog_client_view_unittest.cc
@@ -11,9 +11,11 @@
 #include <utility>
 
 #include "base/memory/raw_ptr.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "ui/base/mojom/dialog_button.mojom.h"
 #include "ui/base/ui_base_types.h"
 #include "ui/events/base_event_utils.h"
@@ -34,10 +36,13 @@
 #include "ui/views/test/test_views.h"
 #include "ui/views/test/views_test_utils.h"
 #include "ui/views/test/widget_test.h"
+#include "ui/views/views_features.h"
 #include "ui/views/widget/unique_widget_ptr.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/window/dialog_delegate.h"
 
+using ui::mojom::DialogButton;
+
 namespace views {
 
 class DialogClientViewTest;
@@ -140,6 +145,11 @@
     return passed_view;
   }
 
+  void SetFixedWidth(int width) {
+    delegate_->set_fixed_width(width);
+    delegate_->DialogModelChanged();
+  }
+
   void SetSizeConstraints(const gfx::Size& min_size,
                           const gfx::Size& preferred_size,
                           const gfx::Size& max_size) {
@@ -148,6 +158,25 @@
     max_size_ = max_size;
   }
 
+  void SetAllowVerticalButtons(bool allow) {
+    delegate_->set_allow_vertical_buttons(allow);
+    delegate_->DialogModelChanged();
+  }
+
+  void SetThreeWideButtonConfiguration() {
+    // Ensure the wide button label will be wider than fixed dialog width.
+    constexpr int kFixedWidth = 100;
+    const std::u16string kLongLabel(kFixedWidth, 'a');
+
+    SetAllowVerticalButtons(true);
+    SetFixedWidth(kFixedWidth);
+    SetDialogButtons(static_cast<int>(DialogButton::kCancel) |
+                     static_cast<int>(DialogButton::kOk));
+    SetExtraView(
+        std::make_unique<LabelButton>(Button::PressedCallback(), u"extra"));
+    SetDialogButtonLabel(ui::mojom::DialogButton::kOk, kLongLabel);
+  }
+
   View* FocusableViewAfter(View* view) {
     const bool dont_loop = false;
     const bool reverse = false;
@@ -859,7 +888,7 @@
 
   extra->SetVisible(false);
   // Re-layout but do not resize the widget. If we resized it without the extra
-  // view, it would get narrower and the other buttons would love.
+  // view, it would get narrower and the other buttons would move.
   EXPECT_TRUE(widget()->GetContentsView()->needs_layout());
   views::test::RunScheduledLayout(widget());
 
@@ -867,4 +896,91 @@
   EXPECT_EQ(cancel_left, cancel->bounds().x());
 }
 
+MATCHER(HasHorizontalButtons, "") {
+  const auto ok_bounds = arg->ok_button()->bounds();
+  const auto cancel_bounds = arg->cancel_button()->bounds();
+
+  EXPECT_EQ(ok_bounds.CenterPoint().y(), cancel_bounds.CenterPoint().y());
+
+  // Order from the top is always Extra, Cancel, Ok (unlike horizontal
+  // platform-specific ordering).
+  if (arg->extra_view()) {
+    const auto extra_bounds = arg->extra_view()->bounds();
+    EXPECT_EQ(ok_bounds.CenterPoint().y(), extra_bounds.CenterPoint().y());
+  }
+
+  return true;
+}
+
+MATCHER(HasVerticalButtons, "") {
+  EXPECT_NE(arg->extra_view(), nullptr);
+  if (!arg->extra_view()) {
+    return false;
+  }
+
+  const auto ok_bounds = arg->ok_button()->bounds();
+  const auto cancel_bounds = arg->cancel_button()->bounds();
+  const auto extra_bounds = arg->extra_view()->bounds();
+
+  // Buttons should have the same width and be vertically-aligned.
+  EXPECT_EQ(ok_bounds.width(), cancel_bounds.width());
+  EXPECT_EQ(ok_bounds.width(), extra_bounds.width());
+  EXPECT_EQ(ok_bounds.x(), cancel_bounds.x());
+  EXPECT_EQ(ok_bounds.x(), extra_bounds.x());
+
+  // Order from the top is always Extra, Cancel, Ok (unlike horizontal
+  // platform-specific ordering).
+  EXPECT_LT(extra_bounds.y(), cancel_bounds.y());
+  EXPECT_LT(cancel_bounds.y(), ok_bounds.y());
+
+  return true;
+}
+
+TEST_F(DialogClientViewTest, WideButtonsRenderVertically) {
+  SetThreeWideButtonConfiguration();
+
+  widget()->Show();
+  SizeAndLayoutWidget();
+  EXPECT_THAT(client_view(), HasVerticalButtons());
+}
+
+TEST_F(DialogClientViewTest, WideButtonsStayHorizontalIfFeatureDisabled) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(
+      views::features::kDialogVerticalButtonFallback);
+
+  SetThreeWideButtonConfiguration();
+
+  widget()->Show();
+  SizeAndLayoutWidget();
+  EXPECT_THAT(client_view(), HasHorizontalButtons());
+}
+
+TEST_F(DialogClientViewTest, WideButtonsStayHorizontalIfNotFixedWidth) {
+  SetThreeWideButtonConfiguration();
+  SetFixedWidth(0);
+
+  widget()->Show();
+  SizeAndLayoutWidget();
+  EXPECT_THAT(client_view(), HasHorizontalButtons());
+}
+
+TEST_F(DialogClientViewTest, WideButtonsStayHorizontalIfNoExtraButton) {
+  SetThreeWideButtonConfiguration();
+  SetExtraView(std::unique_ptr<View>());
+
+  widget()->Show();
+  SizeAndLayoutWidget();
+  EXPECT_THAT(client_view(), HasHorizontalButtons());
+}
+
+TEST_F(DialogClientViewTest, WideButtonsStayHorizontalIfVerticalNotAllowed) {
+  SetThreeWideButtonConfiguration();
+  SetAllowVerticalButtons(false);
+
+  widget()->Show();
+  SizeAndLayoutWidget();
+  EXPECT_THAT(client_view(), HasHorizontalButtons());
+}
+
 }  // namespace views
diff --git a/ui/views/window/dialog_delegate.cc b/ui/views/window/dialog_delegate.cc
index 809e00e..fa171a29 100644
--- a/ui/views/window/dialog_delegate.cc
+++ b/ui/views/window/dialog_delegate.cc
@@ -148,11 +148,16 @@
 #if !BUILDFLAG(IS_APPLE)
   // Web-modal (ui::mojom::ModalType::kChild) dialogs with parents are marked as
   // child widgets to prevent top-level window behavior (independent movement,
-  // etc). On Mac, however, the parent may be a native window (not a
-  // views::Widget), and so the dialog must be considered top-level to gain
-  // focus and input method behaviors.
-  params.child =
-      parent && (delegate->GetModalType() == ui::mojom::ModalType::kChild);
+  // etc). However, on Mac or when forcing to use desktop widget, the
+  // dialog must be considered top-level to gain focus and input method
+  // behaviors.
+  // TODO(crbug.com/346974105): This might be wrong because it implies multiple
+  // focus managers in a widget tree. A widget tree should have a single focus
+  // manager, so that it is impossible for two widgets to have focus
+  // simultaneously.
+  params.child = parent &&
+                 (delegate->GetModalType() == ui::mojom::ModalType::kChild) &&
+                 !delegate->use_desktop_widget_override();
 #endif
 
   if (BubbleDialogDelegate* bubble = delegate->AsBubbleDialogDelegate()) {
diff --git a/ui/views/window/dialog_delegate.h b/ui/views/window/dialog_delegate.h
index 8005433..92d4dc5 100644
--- a/ui/views/window/dialog_delegate.h
+++ b/ui/views/window/dialog_delegate.h
@@ -587,6 +587,11 @@
   // Returns the corner radius that is used for this dialog.
   int GetCornerRadius() const;
 
+  bool allow_vertical_buttons() const { return allow_vertical_buttons_; }
+  void set_allow_vertical_buttons(bool allow) {
+    allow_vertical_buttons_ = allow;
+  }
+
  protected:
   // Overridden from WidgetDelegate:
   ax::mojom::Role GetAccessibleWindowRole() override;
@@ -645,6 +650,15 @@
   // Ownership of the views::Widget created by CreateDialogWidget().
   Widget::InitParams::Ownership ownership_of_new_widget_ =
       Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET;
+
+  // If set, allows the dialog buttons to be arranged in a vertical
+  // layout to maintain fixed dialog width. Specifically, if an extra view has
+  // been supplied (commonly a third button), and the width of the resulting
+  // row of buttons exceeds the specified `fixed_width_`, buttons are stacked
+  // in a column instead. Conventionally, three-button dialogs are designed
+  // with a width large enough to accommodate the required horizontal width.
+  // This switch is an experiment to explore an alternate approach.
+  bool allow_vertical_buttons_ = false;
 };
 
 // A DialogDelegate implementation that is-a View. Used to override GetWidget()
diff --git a/ui/webui/resources/cr_components/certificate_manager/BUILD.gn b/ui/webui/resources/cr_components/certificate_manager/BUILD.gn
index abc3111..e9a69760 100644
--- a/ui/webui/resources/cr_components/certificate_manager/BUILD.gn
+++ b/ui/webui/resources/cr_components/certificate_manager/BUILD.gn
@@ -4,20 +4,17 @@
 
 import("//chrome/common/features.gni")
 import("//crypto/features.gni")
+import("//mojo/public/tools/bindings/mojom.gni")
 import("//ui/webui/resources/tools/build_webui.gni")
 
-assert(use_nss_certs || chrome_root_store_cert_management_ui)
+assert(chrome_root_store_cert_management_ui)
 
-if (chrome_root_store_cert_management_ui) {
-  import("//mojo/public/tools/bindings/mojom.gni")
+mojom("mojom") {
+  sources = [ "certificate_manager_v2.mojom" ]
 
-  mojom("mojom") {
-    sources = [ "certificate_manager_v2.mojom" ]
+  public_deps = [ "//mojo/public/mojom/base" ]
 
-    public_deps = [ "//mojo/public/mojom/base" ]
-
-    webui_module_path = "chrome://resources/cr_components/certificate_manager/"
-  }
+  webui_module_path = "chrome://resources/cr_components/certificate_manager/"
 }
 
 build_webui("build") {
@@ -28,25 +25,6 @@
   static_files = []
   css_files = []
 
-  if (use_nss_certs) {
-    web_component_files += [
-      "ca_trust_edit_dialog.ts",
-      "certificate_delete_confirmation_dialog.ts",
-      "certificate_entry.ts",
-      "certificate_list.ts",
-      "certificate_manager.ts",
-      "certificate_password_decryption_dialog.ts",
-      "certificate_password_encryption_dialog.ts",
-      "certificate_subentry.ts",
-      "certificates_error_dialog.ts",
-    ]
-    ts_files += [
-      "certificate_manager_types.ts",
-      "certificates_browser_proxy.ts",
-    ]
-    css_files += [ "certificate_shared.css" ]
-  }
-
   if (chrome_root_store_cert_management_ui) {
     static_files += [ "favicon.svg" ]
     web_component_files += [
@@ -82,7 +60,11 @@
       "certificate_provisioning_entry.ts",
       "certificate_provisioning_list.ts",
     ]
-    ts_files += [ "certificate_provisioning_browser_proxy.ts" ]
+    css_files += [ "certificate_shared.css" ]
+    ts_files += [
+      "certificate_provisioning_browser_proxy.ts",
+      "certificate_manager_types.ts",
+    ]
   }
 
   ts_out_dir =
diff --git a/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.html b/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.html
deleted file mode 100644
index 9ac93dc..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.html
+++ /dev/null
@@ -1,43 +0,0 @@
-    <style include="certificate-shared">
-      cr-checkbox,
-      #description {
-        margin: 15px 0;
-      }
-
-      .spinner {
-        background-image: url(//resources/images/throbber_small.svg);
-        background-size: 100%;
-        height: 28px;
-        width: 28px;
-      }
-    </style>
-
-    <cr-dialog id="dialog" close-text="[[i18n('close')]]">
-      <div slot="title">
-        [[i18n('certificateManagerCaTrustEditDialogTitle')]]
-      </div>
-      <div slot="body">
-        <div>[[explanationText_]]</div>
-        <div id="description">
-          [[i18n('certificateManagerCaTrustEditDialogDescription')]]
-        </div>
-        <cr-checkbox id="ssl" checked="[[trustInfo_.ssl]]">
-          [[i18n('certificateManagerCaTrustEditDialogSsl')]]
-        </cr-checkbox>
-        <cr-checkbox id="email" checked="[[trustInfo_.email]]">
-          [[i18n('certificateManagerCaTrustEditDialogEmail')]]
-        </cr-checkbox>
-        <cr-checkbox id="objSign" checked="[[trustInfo_.objSign]]">
-          [[i18n('certificateManagerCaTrustEditDialogObjSign')]]
-        </cr-checkbox>
-      </div>
-      <div slot="button-container">
-        <div class="spinner" id="spinner" hidden></div>
-        <cr-button class="cancel-button" on-click="onCancelClick_">
-          [[i18n('cancel')]]
-        </cr-button>
-        <cr-button id="ok" class="action-button" on-click="onOkClick_">
-          [[i18n('ok')]]
-        </cr-button>
-      </div>
-    </cr-dialog>
diff --git a/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.ts b/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.ts
deleted file mode 100644
index 14f3173a..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/ca_trust_edit_dialog.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview 'ca-trust-edit-dialog' allows the user to:
- *  - specify the trust level of a certificate authority that is being
- *    imported.
- *  - edit the trust level of an already existing certificate authority.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_checkbox/cr_checkbox.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import './certificate_shared.css.js';
-
-import type {CrCheckboxElement} from '//resources/cr_elements/cr_checkbox/cr_checkbox.js';
-import type {CrDialogElement} from '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {loadTimeData} from '//resources/js/load_time_data.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './ca_trust_edit_dialog.html.js';
-import type {CaTrustInfo, CertificatesBrowserProxy, CertificateSubnode, NewCertificateSubNode} from './certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl} from './certificates_browser_proxy.js';
-
-export interface CaTrustEditDialogElement {
-  $: {
-    dialog: CrDialogElement,
-    email: CrCheckboxElement,
-    objSign: CrCheckboxElement,
-    ok: HTMLElement,
-    spinner: HTMLElement,
-    ssl: CrCheckboxElement,
-  };
-}
-
-const CaTrustEditDialogElementBase = I18nMixin(PolymerElement);
-
-export class CaTrustEditDialogElement extends CaTrustEditDialogElementBase {
-  static get is() {
-    return 'ca-trust-edit-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      model: Object,
-      trustInfo_: Object,
-      explanationText_: String,
-    };
-  }
-
-  declare model: CertificateSubnode|NewCertificateSubNode;
-  declare private trustInfo_: CaTrustInfo|null;
-  declare private explanationText_: string;
-  private browserProxy_: CertificatesBrowserProxy|null = null;
-
-  override ready() {
-    super.ready();
-    this.browserProxy_ = CertificatesBrowserProxyImpl.getInstance();
-  }
-
-  override connectedCallback() {
-    super.connectedCallback();
-
-    this.explanationText_ = loadTimeData.getStringF(
-        'certificateManagerCaTrustEditDialogExplanation', this.model.name);
-
-    // A non existing |model.id| indicates that a new certificate is being
-    // imported, otherwise an existing certificate is being edited.
-    if ((this.model as CertificateSubnode).id) {
-      this.browserProxy_!
-          .getCaCertificateTrust((this.model as CertificateSubnode).id)
-          .then(trustInfo => {
-            this.trustInfo_ = trustInfo;
-            this.$.dialog.showModal();
-          });
-    } else {
-      this.$.dialog.showModal();
-    }
-  }
-
-  private onCancelClick_() {
-    this.$.dialog.close();
-  }
-
-  private onOkClick_() {
-    this.$.spinner.hidden = false;
-
-    const whenDone = (this.model as CertificateSubnode).id ?
-        this.browserProxy_!.editCaCertificateTrust(
-            (this.model as CertificateSubnode).id, this.$.ssl.checked,
-            this.$.email.checked, this.$.objSign.checked) :
-        this.browserProxy_!.importCaCertificateTrustSelected(
-            this.$.ssl.checked, this.$.email.checked, this.$.objSign.checked);
-
-    whenDone.then(
-        () => {
-          this.$.spinner.hidden = true;
-          this.$.dialog.close();
-        },
-        error => {
-          if (error === null) {
-            return;
-          }
-          this.$.dialog.close();
-          this.dispatchEvent(new CustomEvent('certificates-error', {
-            bubbles: true,
-            composed: true,
-            detail: {error: error, anchor: null},
-          }));
-        });
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'ca-trust-edit-dialog': CaTrustEditDialogElement;
-  }
-}
-
-customElements.define(CaTrustEditDialogElement.is, CaTrustEditDialogElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.html b/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.html
deleted file mode 100644
index 126dd50c..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.html
+++ /dev/null
@@ -1,17 +0,0 @@
-    <style include="certificate-shared"></style>
-    <cr-dialog id="dialog" show-on-attach close-text="[[i18n('close')]]">
-      <div slot="title">
-        [[getTitleText_(model, certificateType)]]
-      </div>
-      <div slot="body">
-        <div>[[getDescriptionText_(model, certificateType)]]</div>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelClick_">
-          [[i18n('cancel')]]
-        </cr-button>
-        <cr-button id="ok" class="action-button" on-click="onOkClick_">
-          [[i18n('ok')]]
-        </cr-button>
-      </div>
-    </cr-dialog>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.ts
deleted file mode 100644
index d21384b..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_delete_confirmation_dialog.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview A confirmation dialog allowing the user to delete various types
- * of certificates.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import './certificate_shared.css.js';
-
-import type {CrDialogElement} from '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {assertNotReached} from '//resources/js/assert.js';
-import {loadTimeData} from '//resources/js/load_time_data.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_delete_confirmation_dialog.html.js';
-import type {CertificateSubnode} from './certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl, CertificateType} from './certificates_browser_proxy.js';
-
-export interface CertificateDeleteConfirmationDialogElement {
-  $: {
-    dialog: CrDialogElement,
-    ok: HTMLElement,
-  };
-}
-
-const CertificateDeleteConfirmationDialogElementBase =
-    I18nMixin(PolymerElement);
-
-export class CertificateDeleteConfirmationDialogElement extends
-    CertificateDeleteConfirmationDialogElementBase {
-  static get is() {
-    return 'certificate-delete-confirmation-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      model: Object,
-      certificateType: String,
-    };
-  }
-
-  declare model: CertificateSubnode;
-  declare certificateType: CertificateType;
-
-  private getTitleText_(): string {
-    const getString = (localizedMessageId: string) =>
-        loadTimeData.getStringF(localizedMessageId, this.model.name);
-
-    switch (this.certificateType) {
-      case CertificateType.PERSONAL:
-        return getString('certificateManagerDeleteUserTitle');
-      case CertificateType.SERVER:
-        return getString('certificateManagerDeleteServerTitle');
-      case CertificateType.CA:
-        return getString('certificateManagerDeleteCaTitle');
-      case CertificateType.OTHER:
-        return getString('certificateManagerDeleteOtherTitle');
-      default:
-        assertNotReached();
-    }
-  }
-
-  private getDescriptionText_(): string {
-    const getString = loadTimeData.getString.bind(loadTimeData);
-    switch (this.certificateType) {
-      case CertificateType.PERSONAL:
-        return getString('certificateManagerDeleteUserDescription');
-      case CertificateType.SERVER:
-        return getString('certificateManagerDeleteServerDescription');
-      case CertificateType.CA:
-        return getString('certificateManagerDeleteCaDescription');
-      case CertificateType.OTHER:
-        return '';
-      default:
-        assertNotReached();
-    }
-  }
-
-  private onCancelClick_() {
-    this.$.dialog.close();
-  }
-
-  private onOkClick_() {
-    CertificatesBrowserProxyImpl.getInstance()
-        .deleteCertificate(this.model.id)
-        .then(
-            () => {
-              this.$.dialog.close();
-            },
-            error => {
-              if (error === null) {
-                return;
-              }
-              this.$.dialog.close();
-              this.dispatchEvent(new CustomEvent('certificates-error', {
-                bubbles: true,
-                composed: true,
-                detail: {error: error, anchor: null},
-              }));
-            });
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-delete-confirmation-dialog':
-        CertificateDeleteConfirmationDialogElement;
-  }
-}
-
-customElements.define(
-    CertificateDeleteConfirmationDialogElement.is,
-    CertificateDeleteConfirmationDialogElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_entry.html b/ui/webui/resources/cr_components/certificate_manager/certificate_entry.html
deleted file mode 100644
index b4d283c..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_entry.html
+++ /dev/null
@@ -1,27 +0,0 @@
-    <style include="certificate-shared">
-      .expand-box {
-        align-items: center;
-        border-top: var(--cr-separator-line);
-        display: flex;
-        min-height: 48px;
-        padding: 0 20px;
-      }
-    </style>
-    <div class="expand-box">
-      <div class="flex">[[model.id]]</div>
-      <cr-policy-indicator indicator-type="[[getPolicyIndicatorType_(model)]]">
-      </cr-policy-indicator>
-      <cr-expand-button no-hover expanded="{{expanded_}}"
-          aria-label="[[i18n('certificateManagerExpandA11yLabel')]]">
-      </cr-expand-button>
-    </div>
-    <template is="dom-if" if="[[expanded_]]">
-      <div class="list-frame">
-        <template is="dom-repeat" items="[[model.subnodes]]">
-          <certificate-subentry model="[[item]]"
-              certificate-type="[[certificateType]]"
-              is-last$="[[isLast_(index, model)]]">
-          </certificate-subentry>
-        </template>
-      </div>
-    </template>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_entry.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_entry.ts
deleted file mode 100644
index 55d37352..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_entry.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview An element that represents an SSL certificate entry.
- */
-import '//resources/cr_elements/cr_expand_button/cr_expand_button.js';
-import '//resources/cr_elements/policy/cr_policy_indicator.js';
-import './certificate_shared.css.js';
-import './certificate_subentry.js';
-
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {CrPolicyIndicatorType} from '//resources/cr_elements/policy/cr_policy_types.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_entry.html.js';
-import type {CertificatesOrgGroup, CertificateType} from './certificates_browser_proxy.js';
-
-const CertificateEntryElementBase = I18nMixin(PolymerElement);
-
-class CertificateEntryElement extends CertificateEntryElementBase {
-  static get is() {
-    return 'certificate-entry';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      model: Object,
-      certificateType: String,
-    };
-  }
-
-  declare model: CertificatesOrgGroup;
-  declare certificateType: CertificateType;
-
-  /**
-   * @return Whether the given index corresponds to the last sub-node.
-   */
-  private isLast_(index: number): boolean {
-    return index === this.model.subnodes.length - 1;
-  }
-
-  private getPolicyIndicatorType_(): CrPolicyIndicatorType {
-    return this.model.containsPolicyCerts ? CrPolicyIndicatorType.USER_POLICY :
-                                            CrPolicyIndicatorType.NONE;
-  }
-}
-
-customElements.define(CertificateEntryElement.is, CertificateEntryElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_list.html b/ui/webui/resources/cr_components/certificate_manager/certificate_list.html
deleted file mode 100644
index dd58e2f..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_list.html
+++ /dev/null
@@ -1,32 +0,0 @@
-    <style include="certificate-shared">
-      .button-box {
-        align-items: center;
-        display: flex;
-        margin-bottom: 24px;
-        min-height: 48px;
-        padding: 0 20px;
-      }
-
-      /* TODO(aee): add platform conditional after crbug/964506 is fixed. */
-      #importAndBind {
-        margin-inline-start: 8px;
-      }
-    </style>
-    <div class="button-box">
-      <span class="flex">
-          [[getDescription_(certificateType, certificates)]]</span>
-      <cr-button id="import" on-click="onImportClick_"
-          hidden="[[!canImport_(certificateType, importAllowed, isKiosk_)]]">
-        [[i18n('certificateManagerImport')]]</cr-button>
-<if expr="is_chromeos">
-      <cr-button id="importAndBind" on-click="onImportAndBindClick_"
-          hidden="[[!canImportAndBind_(certificateType, importAllowed,
-                 isGuest_)]]">
-        [[i18n('certificateManagerImportAndBind')]]</cr-button>
-</if>
-    </div>
-    <template is="dom-repeat" items="[[certificates]]">
-      <certificate-entry model="[[item]]"
-          certificate-type="[[certificateType]]">
-      </certificate-entry>
-    </template>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_list.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_list.ts
deleted file mode 100644
index b26af296..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_list.ts
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview 'certificate-list' is an element that displays a list of
- * certificates.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import './certificate_entry.js';
-import './certificate_shared.css.js';
-
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {assertNotReached} from '//resources/js/assert.js';
-import {loadTimeData} from '//resources/js/load_time_data.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_list.html.js';
-import {CertificateAction, CertificateActionEvent} from './certificate_manager_types.js';
-import type {CertificatesError, CertificatesImportError, CertificatesOrgGroup, NewCertificateSubNode} from './certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl, CertificateType} from './certificates_browser_proxy.js';
-
-export interface CertificateListElement {
-  $: {
-    import: HTMLElement,
-    // <if expr="is_chromeos">
-    importAndBind: HTMLElement,
-    // </if>
-  };
-}
-
-const CertificateListElementBase = I18nMixin(PolymerElement);
-
-export class CertificateListElement extends CertificateListElementBase {
-  static get is() {
-    return 'certificate-list';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      certificates: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      certificateType: String,
-      importAllowed: Boolean,
-
-      // <if expr="is_chromeos">
-      isGuest_: {
-        type: Boolean,
-        value() {
-          return loadTimeData.valueExists('isGuest') &&
-              loadTimeData.getBoolean('isGuest');
-        },
-      },
-      // </if>
-
-      isKiosk_: {
-        type: Boolean,
-        value() {
-          return loadTimeData.valueExists('isKiosk') &&
-              loadTimeData.getBoolean('isKiosk');
-        },
-      },
-    };
-  }
-
-  declare certificates: CertificatesOrgGroup[];
-  declare certificateType: CertificateType;
-  declare importAllowed: boolean;
-  // <if expr="is_chromeos">
-  declare private isGuest_: boolean;
-  // </if>
-  declare private isKiosk_: boolean;
-
-  private getDescription_(): string {
-    if (this.certificates.length === 0) {
-      return this.i18n('certificateManagerNoCertificates');
-    }
-
-    switch (this.certificateType) {
-      case CertificateType.PERSONAL:
-        return this.i18n('certificateManagerYourCertificatesDescription');
-      case CertificateType.SERVER:
-        return this.i18n('certificateManagerServersDescription');
-      case CertificateType.CA:
-        return this.i18n('certificateManagerAuthoritiesDescription');
-      case CertificateType.OTHER:
-        return this.i18n('certificateManagerOthersDescription');
-      default:
-        assertNotReached();
-    }
-  }
-
-  private canImport_(): boolean {
-    return !this.isKiosk_ && this.certificateType !== CertificateType.OTHER &&
-        this.importAllowed;
-  }
-
-  // <if expr="is_chromeos">
-  private canImportAndBind_(): boolean {
-    return !this.isGuest_ &&
-        this.certificateType === CertificateType.PERSONAL && this.importAllowed;
-  }
-  // </if>
-
-  /**
-   * Handles a rejected Promise returned from |browserProxy_|.
-   */
-  private onRejected_(
-      anchor: HTMLElement,
-      error: CertificatesError|CertificatesImportError|null) {
-    if (error === null) {
-      // Nothing to do here. Null indicates that the user clicked "cancel" on a
-      // native file chooser dialog or that the request was ignored by the
-      // handler due to being received while another was still being processed.
-      return;
-    }
-
-    // Otherwise propagate the error to the parents, such that a dialog
-    // displaying the error will be shown.
-    this.dispatchEvent(new CustomEvent('certificates-error', {
-      bubbles: true,
-      composed: true,
-      detail: {error, anchor},
-    }));
-  }
-
-  private dispatchImportActionEvent_(
-      subnode: NewCertificateSubNode|null, anchor: HTMLElement) {
-    this.dispatchEvent(new CustomEvent(CertificateActionEvent, {
-      bubbles: true,
-      composed: true,
-      detail: {
-        action: CertificateAction.IMPORT,
-        subnode: subnode,
-        certificateType: this.certificateType,
-        anchor: anchor,
-      },
-    }));
-  }
-
-  private onImportClick_(e: Event) {
-    this.handleImport_(false, e.target as HTMLElement);
-  }
-
-  // <if expr="is_chromeos">
-  private onImportAndBindClick_(e: Event) {
-    this.handleImport_(true, e.target as HTMLElement);
-  }
-  // </if>
-
-  private handleImport_(useHardwareBacked: boolean, anchor: HTMLElement) {
-    const browserProxy = CertificatesBrowserProxyImpl.getInstance();
-    if (this.certificateType === CertificateType.PERSONAL) {
-      browserProxy.importPersonalCertificate(useHardwareBacked)
-          .then(showPasswordPrompt => {
-            if (showPasswordPrompt) {
-              this.dispatchImportActionEvent_(null, anchor);
-            }
-          }, this.onRejected_.bind(this, anchor));
-    } else if (this.certificateType === CertificateType.CA) {
-      browserProxy.importCaCertificate().then(certificateName => {
-        this.dispatchImportActionEvent_({name: certificateName}, anchor);
-      }, this.onRejected_.bind(this, anchor));
-    } else if (this.certificateType === CertificateType.SERVER) {
-      browserProxy.importServerCertificate().catch(
-          this.onRejected_.bind(this, anchor));
-    } else {
-      assertNotReached();
-    }
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-list': CertificateListElement;
-  }
-}
-
-customElements.define(CertificateListElement.is, CertificateListElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_manager.html b/ui/webui/resources/cr_components/certificate_manager/certificate_manager.html
deleted file mode 100644
index 6a2414d..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_manager.html
+++ /dev/null
@@ -1,71 +0,0 @@
-    <style include="cr-hidden-style">
-      cr-tabs {
-        --cr-tabs-font-size: inherit;
-        --cr-tabs-height: 40px;
-        margin-bottom: 24px;
-      }
-    </style>
-
-    <template is="dom-if" if="[[showCaTrustEditDialog_]]" restamp>
-      <ca-trust-edit-dialog model="[[dialogModel_]]">
-      </ca-trust-edit-dialog>
-    </template>
-    <template is="dom-if" if="[[showDeleteConfirmationDialog_]]" restamp>
-      <certificate-delete-confirmation-dialog
-          model="[[dialogModel_]]"
-          certificate-type="[[dialogModelCertificateType_]]">
-      </certificate-delete-confirmation-dialog>
-    </template>
-    <template is="dom-if" if="[[showPasswordEncryptionDialog_]]" restamp>
-      <certificate-password-encryption-dialog>
-      </certificate-password-encryption-dialog>
-    </template>
-    <template is="dom-if" if="[[showPasswordDecryptionDialog_]]" restamp>
-      <certificate-password-decryption-dialog>
-      </certificate-password-decryption-dialog>
-    </template>
-    <template is="dom-if" if="[[showErrorDialog_]]" restamp>
-      <certificates-error-dialog model="[[errorDialogModel_]]">
-      </certificates-error-dialog>
-    </template>
-
-    <cr-tabs selected="{{selected}}" tab-names="[[tabNames_]]"></cr-tabs>
-    <cr-page-selector selected="[[selected]]">
-      <div>
-        <certificate-list id="personalCerts"
-            certificates="[[personalCerts]]"
-            certificate-type="[[certificateTypeEnum_.PERSONAL]]"
-            import-allowed="[[clientImportAllowed]]">
-        </certificate-list>
-<if expr="is_chromeos">
-        <certificate-provisioning-list></certificate-provisioning-list>
-</if>
-      </div>
-      <div>
-        <template is="dom-if" if="[[isTabSelected_(selected, 1)]]">
-          <certificate-list id="serverCerts"
-              certificates="[[serverCerts]]"
-              certificate-type="[[certificateTypeEnum_.SERVER]]"
-              import-allowed="true">
-          </certificate-list>
-        </template>
-      </div>
-      <div>
-        <template is="dom-if" if="[[isTabSelected_(selected, 2)]]">
-          <certificate-list id="caCerts"
-              certificates="[[caCerts]]"
-              certificate-type="[[certificateTypeEnum_.CA]]"
-              import-allowed="[[caImportAllowed]]">
-          </certificate-list>
-        </template>
-      </div>
-      <div>
-        <template is="dom-if" if="[[isTabSelected_(selected, 3)]]">
-          <certificate-list id="otherCerts"
-              certificates="[[otherCerts]]"
-              certificate-type="[[certificateTypeEnum_.OTHER]]"
-              import-allowed="false">
-          </certificate-list>
-        </template>
-      </div>
-    </cr-page-selector>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_manager.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_manager.ts
deleted file mode 100644
index 4ef7b8c7..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_manager.ts
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview The 'certificate-manager' component manages SSL certificates.
- */
-import '//resources/cr_elements/cr_tabs/cr_tabs.js';
-import '//resources/cr_elements/cr_hidden_style.css.js';
-import '//resources/cr_elements/cr_page_selector/cr_page_selector.js';
-import './ca_trust_edit_dialog.js';
-import './certificate_delete_confirmation_dialog.js';
-import './certificate_list.js';
-import './certificate_password_decryption_dialog.js';
-import './certificate_password_encryption_dialog.js';
-import './certificates_error_dialog.js';
-// <if expr="is_chromeos">
-import './certificate_provisioning_list.js';
-
-// </if>
-
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {WebUiListenerMixin} from '//resources/cr_elements/web_ui_listener_mixin.js';
-import {focusWithoutInk} from '//resources/js/focus_without_ink.js';
-import {loadTimeData} from '//resources/js/load_time_data.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_manager.html.js';
-import {CertificateAction, CertificateActionEvent} from './certificate_manager_types.js';
-import type {CertificatesError, CertificatesImportError, CertificatesOrgGroup, CertificateSubnode, NewCertificateSubNode} from './certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl, CertificateType} from './certificates_browser_proxy.js';
-
-const CertificateManagerElementBase =
-    WebUiListenerMixin(I18nMixin(PolymerElement));
-
-export class CertificateManagerElement extends CertificateManagerElementBase {
-  static get is() {
-    return 'certificate-manager';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      selected: {
-        type: Number,
-        value: 0,
-      },
-
-      personalCerts: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      serverCerts: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      caCerts: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      otherCerts: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      /**
-       * Indicates if client certificate import is allowed
-       * by Chrome OS specific policy ClientCertificateManagementAllowed.
-       * Value exists only for Chrome OS.
-       */
-      clientImportAllowed: {
-        type: Boolean,
-        value: false,
-      },
-
-      /**
-       * Indicates if CA certificate import is allowed
-       * by Chrome OS specific policy CACertificateManagementAllowed.
-       * Value exists only for Chrome OS.
-       */
-      caImportAllowed: {
-        type: Boolean,
-        value: false,
-      },
-
-      certificateTypeEnum_: {
-        type: Object,
-        value: CertificateType,
-        readOnly: true,
-      },
-
-      showCaTrustEditDialog_: Boolean,
-      showDeleteConfirmationDialog_: Boolean,
-      showPasswordEncryptionDialog_: Boolean,
-      showPasswordDecryptionDialog_: Boolean,
-      showErrorDialog_: Boolean,
-
-      /**
-       * The model to be passed to dialogs that refer to a given certificate.
-       */
-      dialogModel_: Object,
-
-      /**
-       * The certificate type to be passed to dialogs that refer to a given
-       * certificate.
-       */
-      dialogModelCertificateType_: String,
-
-      /**
-       * The model to be passed to the error dialog.
-       */
-      errorDialogModel_: Object,
-
-      /**
-       * The element to return focus to, when the currently shown dialog is
-       * closed.
-       */
-      activeDialogAnchor_: Object,
-
-      isKiosk_: {
-        type: Boolean,
-        value() {
-          return loadTimeData.valueExists('isKiosk') &&
-              loadTimeData.getBoolean('isKiosk');
-        },
-      },
-
-      tabNames_: {
-        type: Array,
-        computed: 'computeTabNames_(isKiosk_)',
-      },
-    };
-  }
-
-  declare selected: number;
-  declare personalCerts: CertificatesOrgGroup[];
-  declare serverCerts: CertificatesOrgGroup[];
-  declare caCerts: CertificatesOrgGroup[];
-  declare otherCerts: CertificatesOrgGroup[];
-  declare clientImportAllowed: boolean;
-  declare caImportAllowed: boolean;
-  declare private showCaTrustEditDialog_: boolean;
-  declare private showDeleteConfirmationDialog_: boolean;
-  declare private showPasswordEncryptionDialog_: boolean;
-  declare private showPasswordDecryptionDialog_: boolean;
-  declare private showErrorDialog_: boolean;
-  declare private dialogModel_: CertificateSubnode|NewCertificateSubNode|null;
-  declare private dialogModelCertificateType_: CertificateType|null;
-  declare private errorDialogModel_: CertificatesError|CertificatesImportError|
-      null;
-  declare private activeDialogAnchor_: HTMLElement|null;
-  declare private isKiosk_: boolean;
-  declare private tabNames_: string[];
-
-
-  override connectedCallback() {
-    super.connectedCallback();
-    this.addWebUiListener('certificates-changed', this.set.bind(this));
-    this.addWebUiListener(
-        'client-import-allowed-changed',
-        this.setClientImportAllowed.bind(this));
-    this.addWebUiListener(
-        'ca-import-allowed-changed', this.setCaImportAllowed.bind(this));
-    CertificatesBrowserProxyImpl.getInstance().refreshCertificates();
-  }
-
-  private setClientImportAllowed(allowed: boolean) {
-    this.clientImportAllowed = allowed;
-  }
-
-  private setCaImportAllowed(allowed: boolean) {
-    this.caImportAllowed = allowed;
-  }
-
-  /**
-   * @return Whether to show tab at |tabIndex|.
-   */
-  private isTabSelected_(selectedIndex: number, tabIndex: number): boolean {
-    return selectedIndex === tabIndex;
-  }
-
-  override ready() {
-    super.ready();
-    this.addEventListener(CertificateActionEvent, event => {
-      this.dialogModel_ = event.detail.subnode;
-      this.dialogModelCertificateType_ = event.detail.certificateType;
-
-      if (event.detail.action === CertificateAction.IMPORT) {
-        if (event.detail.certificateType === CertificateType.PERSONAL) {
-          this.openDialog_(
-              'certificate-password-decryption-dialog',
-              'showPasswordDecryptionDialog_', event.detail.anchor);
-        } else if (event.detail.certificateType === CertificateType.CA) {
-          this.openDialog_(
-              'ca-trust-edit-dialog', 'showCaTrustEditDialog_',
-              event.detail.anchor);
-        }
-      } else {
-        if (event.detail.action === CertificateAction.EDIT) {
-          this.openDialog_(
-              'ca-trust-edit-dialog', 'showCaTrustEditDialog_',
-              event.detail.anchor);
-        } else if (event.detail.action === CertificateAction.DELETE) {
-          this.openDialog_(
-              'certificate-delete-confirmation-dialog',
-              'showDeleteConfirmationDialog_', event.detail.anchor);
-        } else if (event.detail.action === CertificateAction.EXPORT_PERSONAL) {
-          this.openDialog_(
-              'certificate-password-encryption-dialog',
-              'showPasswordEncryptionDialog_', event.detail.anchor);
-        }
-      }
-
-      event.stopPropagation();
-    });
-
-    this.addEventListener('certificates-error', event => {
-      const detail = event.detail;
-      this.errorDialogModel_ = detail.error;
-      this.openDialog_(
-          'certificates-error-dialog', 'showErrorDialog_', detail.anchor);
-      event.stopPropagation();
-    });
-  }
-
-  /**
-   * Opens a dialog and registers a listener for removing the dialog from the
-   * DOM once is closed. The listener is destroyed when the dialog is removed
-   * (because of 'restamp').
-   *
-   * @param dialogTagName The tag name of the dialog to be shown.
-   * @param domIfBooleanName The name of the boolean variable
-   *     corresponding to the dialog.
-   * @param anchor The element to focus when the dialog is
-   *     closed. If null, the previous anchor element should be reused. This
-   *     happens when a 'certificates-error-dialog' is opened, which when closed
-   *     should focus the anchor of the previous dialog (the one that generated
-   *     the error).
-   */
-  private openDialog_(
-      dialogTagName: string, domIfBooleanName: string,
-      anchor: HTMLElement|null) {
-    if (anchor) {
-      this.activeDialogAnchor_ = anchor;
-    }
-    this.set(domIfBooleanName, true);
-    window.setTimeout(() => {
-      const dialog = this.shadowRoot!.querySelector(dialogTagName)!;
-      dialog.addEventListener('close', () => {
-        this.set(domIfBooleanName, false);
-        focusWithoutInk(this.activeDialogAnchor_!);
-      });
-    }, 0);
-  }
-
-  private computeTabNames_(): string[] {
-    return [
-      loadTimeData.getString('certificateManagerYourCertificates'),
-      ...(this.isKiosk_ ?
-              [] :
-              [
-                loadTimeData.getString('certificateManagerServers'),
-                loadTimeData.getString('certificateManagerAuthorities'),
-              ]),
-      loadTimeData.getString('certificateManagerOthers'),
-    ];
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-manager': CertificateManagerElement;
-  }
-}
-
-customElements.define(CertificateManagerElement.is, CertificateManagerElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_manager_types.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_manager_types.ts
index 45ebfafc..5536be5 100644
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_manager_types.ts
+++ b/ui/webui/resources/cr_components/certificate_manager/certificate_manager_types.ts
@@ -2,60 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-/**
- * @fileoverview Closure compiler typedefs.
- */
-
-// clang-format off
-// <if expr="is_chromeos">
 import type {CertificateProvisioningProcess} from './certificate_provisioning_browser_proxy.js';
-// </if>
-import type {CertificatesError, CertificatesImportError,CertificateSubnode, CertificateType, NewCertificateSubNode} from './certificates_browser_proxy.js';
-// clang-format on
 
 /**
- * The payload of the 'certificate-action' event.
- */
-export interface CertificateActionEventDetail {
-  action: CertificateAction;
-  subnode: CertificateSubnode|NewCertificateSubNode|null;
-  certificateType: CertificateType;
-  anchor: HTMLElement;
-}
-
-/**
- * The payload of the 'certificates-error' event.
- */
-export interface CertificatesErrorEventDetail {
-  error: CertificatesError|CertificatesImportError|null;
-  anchor: HTMLElement|null;
-}
-
-/**
- * Enumeration of actions that require a popup menu to be shown to the user.
- */
-export enum CertificateAction {
-  DELETE = 0,
-  EDIT = 1,
-  EXPORT_PERSONAL = 2,
-  IMPORT = 3,
-}
-
-/**
- * The name of the event fired when a certificate action is selected from the
- * dropdown menu. CertificateActionEventDetail is passed as the event detail.
- */
-export const CertificateActionEvent = 'certificate-action';
-
-// <if expr="is_chromeos">
-/**
  * The payload of the 'certificate-provisioning-view-details-action' event.
  */
 export interface CertificateProvisioningActionEventDetail {
   model: CertificateProvisioningProcess;
   anchor: HTMLElement;
 }
-// </if>
 
 /**
  * The name of the event fired when a the "View Details" action is selected on
@@ -67,11 +22,7 @@
 
 declare global {
   interface HTMLElementEventMap {
-    'certificates-error': CustomEvent<CertificatesErrorEventDetail>;
-    'certificate-action': CustomEvent<CertificateActionEventDetail>;
-    // <if expr="is_chromeos">
     'certificate-provisioning-view-details-action':
         CustomEvent<CertificateProvisioningActionEventDetail>;
-    // </if>
   }
 }
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.html b/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.html
deleted file mode 100644
index 3985ca0..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.html
+++ /dev/null
@@ -1,24 +0,0 @@
-    <style include="certificate-shared">
-      cr-input {
-        --cr-input-error-display: none;
-      }
-    </style>
-    <cr-dialog id="dialog" show-on-attach close-text="[[i18n('close')]]">
-      <div slot="title">
-        [[i18n('certificateManagerDecryptPasswordTitle')]]
-      </div>
-      <div slot="body">
-        <cr-input type="password" id="password"
-            label="[[i18n('certificateManagerPassword')]]"
-            value="{{password_}}" autofocus>
-        </cr-input>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelClick_">
-          [[i18n('cancel')]]
-        </cr-button>
-        <cr-button id="ok" class="action-button" on-click="onOkClick_">
-          [[i18n('ok')]]
-        </cr-button>
-      </div>
-    </cr-dialog>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.ts
deleted file mode 100644
index 41d10ac..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_password_decryption_dialog.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview A dialog prompting the user for a decryption password such that
- * a previously exported personal certificate can be imported.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import '//resources/cr_elements/cr_input/cr_input.js';
-import './certificate_shared.css.js';
-
-import type {CrButtonElement} from '//resources/cr_elements/cr_button/cr_button.js';
-import type {CrDialogElement} from '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_password_decryption_dialog.html.js';
-import {CertificatesBrowserProxyImpl} from './certificates_browser_proxy.js';
-
-export interface CertificatePasswordDecryptionDialogElement {
-  $: {
-    dialog: CrDialogElement,
-    ok: CrButtonElement,
-  };
-}
-
-const CertificatePasswordDecryptionDialogElementBase =
-    I18nMixin(PolymerElement);
-
-export class CertificatePasswordDecryptionDialogElement extends
-    CertificatePasswordDecryptionDialogElementBase {
-  static get is() {
-    return 'certificate-password-decryption-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      password_: {
-        type: String,
-        value: '',
-      },
-    };
-  }
-
-  declare private password_: string;
-
-  private onCancelClick_() {
-    this.$.dialog.close();
-  }
-
-  private onOkClick_() {
-    CertificatesBrowserProxyImpl.getInstance()
-        .importPersonalCertificatePasswordSelected(this.password_)
-        .then(
-            () => {
-              this.$.dialog.close();
-            },
-            error => {
-              if (error === null) {
-                return;
-              }
-              this.$.dialog.close();
-              this.dispatchEvent(new CustomEvent('certificates-error', {
-                bubbles: true,
-                composed: true,
-                detail: {error: error, anchor: null},
-              }));
-            });
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-password-decryption-dialog':
-        CertificatePasswordDecryptionDialogElement;
-  }
-}
-
-customElements.define(
-    CertificatePasswordDecryptionDialogElement.is,
-    CertificatePasswordDecryptionDialogElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.html b/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.html
deleted file mode 100644
index b66b419..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.html
+++ /dev/null
@@ -1,35 +0,0 @@
-    <style include="certificate-shared">
-      cr-input {
-        --cr-input-error-display: none;
-        margin-top: var(--cr-form-field-bottom-spacing);
-      }
-
-      .password-buttons {
-        margin-bottom: 20px;
-      }
-    </style>
-    <cr-dialog id="dialog" close-text="[[i18n('close')]]">
-      <div slot="title">
-        [[i18n('certificateManagerEncryptPasswordTitle')]]
-      </div>
-      <div slot="body">
-        <div>[[i18n('certificateManagerEncryptPasswordDescription')]]</div>
-        <div class="password-buttons">
-          <cr-input type="password" value="{{password_}}" id="password"
-              label="[[i18n('certificateManagerPassword')]]"
-              on-input="validate_" autofocus></cr-input>
-          <cr-input type="password"
-              value="{{confirmPassword_}}" id="confirmPassword"
-              label="[[i18n('certificateManagerConfirmPassword')]]"
-              on-input="validate_"></cr-input>
-        </div>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelClick_">
-          [[i18n('cancel')]]
-        </cr-button>
-        <cr-button id="ok" class="action-button" on-click="onOkClick_" disabled>
-          [[i18n('ok')]]
-        </cr-button>
-      </div>
-    </cr-dialog>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.ts
deleted file mode 100644
index af44033..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_password_encryption_dialog.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview A dialog prompting the user to encrypt a personal certificate
- * before it is exported to disk.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import '//resources/cr_elements/cr_input/cr_input.js';
-import '//resources/cr_elements/cr_shared_vars.css.js';
-import './certificate_shared.css.js';
-
-import type {CrButtonElement} from '//resources/cr_elements/cr_button/cr_button.js';
-import type {CrDialogElement} from '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {getTemplate} from './certificate_password_encryption_dialog.html.js';
-import {CertificatesBrowserProxyImpl} from './certificates_browser_proxy.js';
-
-export interface CertificatePasswordEncryptionDialogElement {
-  $: {
-    dialog: CrDialogElement,
-    ok: CrButtonElement,
-  };
-}
-
-const CertificatePasswordEncryptionDialogElementBase =
-    I18nMixin(PolymerElement);
-
-export class CertificatePasswordEncryptionDialogElement extends
-    CertificatePasswordEncryptionDialogElementBase {
-  static get is() {
-    return 'certificate-password-encryption-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      password_: {
-        type: String,
-        value: '',
-      },
-
-      confirmPassword_: {
-        type: String,
-        value: '',
-      },
-    };
-  }
-
-  declare private password_: string;
-  declare private confirmPassword_: string;
-
-  override connectedCallback() {
-    super.connectedCallback();
-    this.$.dialog.showModal();
-  }
-
-  private onCancelClick_() {
-    this.$.dialog.close();
-  }
-
-  private onOkClick_() {
-    CertificatesBrowserProxyImpl.getInstance()
-        .exportPersonalCertificatePasswordSelected(this.password_)
-        .then(
-            () => {
-              this.$.dialog.close();
-            },
-            error => {
-              if (error === null) {
-                return;
-              }
-              this.$.dialog.close();
-              this.dispatchEvent(new CustomEvent('certificates-error', {
-                bubbles: true,
-                composed: true,
-                detail: {error: error, anchor: null},
-              }));
-            });
-  }
-
-  private validate_() {
-    const isValid =
-        this.password_ !== '' && this.password_ === this.confirmPassword_;
-    this.$.ok.disabled = !isValid;
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-password-encryption-dialog':
-        CertificatePasswordEncryptionDialogElement;
-  }
-}
-
-customElements.define(
-    CertificatePasswordEncryptionDialogElement.is,
-    CertificatePasswordEncryptionDialogElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.html b/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.html
deleted file mode 100644
index 93fcea93..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.html
+++ /dev/null
@@ -1,52 +0,0 @@
-    <style include="certificate-shared cr-icons">
-      .name {
-        flex: auto;
-      }
-
-      .untrusted {
-        color: #d32f2f;  /* --paper-red-700 */
-        font-weight: 500;
-        margin-inline-end: 16px;
-        text-transform: uppercase;
-      }
-
-      :host([is-last]) .list-item {
-        border-bottom: none;
-      }
-    </style>
-    <div class="list-item underbar">
-      <div class="untrusted" hidden$="[[!model.untrusted]]">
-        [[i18n('certificateManagerUntrusted')]]
-      </div>
-      <div class="name">[[model.name]]</div>
-      <cr-policy-indicator indicator-type="[[getPolicyIndicatorType_(model)]]">
-      </cr-policy-indicator>
-      <cr-icon-button class="icon-more-vert" id="dots"
-          title="[[i18n('moreActions')]]" on-click="onDotsClick_">
-      </cr-icon-button>
-      <cr-lazy-render id="menu">
-        <template>
-          <cr-action-menu role-description="[[i18n('menu')]]">
-            <button class="dropdown-item" id="view"
-                on-click="onViewClick_">
-              [[i18n('certificateManagerView')]]
-            </button>
-            <button class="dropdown-item" id="edit"
-                hidden$="[[!canEdit_(model)]]"
-                on-click="onEditClick_">
-              [[i18n('edit')]]
-            </button>
-            <button class="dropdown-item" id="export"
-                hidden$="[[!canExport_(certificateType, model)]]"
-                on-click="onExportClick_">
-              [[i18n('certificateManagerExport')]]
-            </button>
-            <button class="dropdown-item" id="delete"
-                hidden$="[[!canDelete_(model)]]"
-                on-click="onDeleteClick_">
-              [[i18n('certificateManagerDelete')]]
-            </button>
-          </cr-action-menu>
-        </template>
-      </cr-lazy-render>
-    <div>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.ts b/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.ts
deleted file mode 100644
index b676a7d9..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificate_subentry.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview certificate-subentry represents an SSL certificate sub-entry.
- */
-
-import '//resources/cr_elements/cr_action_menu/cr_action_menu.js';
-import '//resources/cr_elements/cr_icon_button/cr_icon_button.js';
-import '//resources/cr_elements/cr_lazy_render/cr_lazy_render.js';
-import '//resources/cr_elements/policy/cr_policy_indicator.js';
-import '//resources/cr_elements/icons.html.js';
-import './certificate_shared.css.js';
-
-import type {CrActionMenuElement} from '//resources/cr_elements/cr_action_menu/cr_action_menu.js';
-import type {CrLazyRenderElement} from '//resources/cr_elements/cr_lazy_render/cr_lazy_render.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {CrPolicyIndicatorType} from '//resources/cr_elements/policy/cr_policy_types.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {CertificateAction, CertificateActionEvent} from './certificate_manager_types.js';
-import {getTemplate} from './certificate_subentry.html.js';
-import type {CertificatesBrowserProxy, CertificatesError, CertificateSubnode} from './certificates_browser_proxy.js';
-import {CertificatesBrowserProxyImpl, CertificateType} from './certificates_browser_proxy.js';
-
-export interface CertificateSubentryElement {
-  $: {
-    menu: CrLazyRenderElement<CrActionMenuElement>,
-    dots: HTMLElement,
-  };
-}
-
-const CertificateSubentryElementBase = I18nMixin(PolymerElement);
-
-export class CertificateSubentryElement extends CertificateSubentryElementBase {
-  static get is() {
-    return 'certificate-subentry';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      model: Object,
-      certificateType: String,
-    };
-  }
-
-  declare model: CertificateSubnode;
-  declare certificateType: CertificateType;
-  private browserProxy_: CertificatesBrowserProxy =
-      CertificatesBrowserProxyImpl.getInstance();
-
-  /**
-   * Dispatches an event indicating which certificate action was tapped. It is
-   * used by the parent of this element to display a modal dialog accordingly.
-   */
-  private dispatchCertificateActionEvent_(action: CertificateAction) {
-    this.dispatchEvent(new CustomEvent(CertificateActionEvent, {
-      bubbles: true,
-      composed: true,
-      detail: {
-        action: action,
-        subnode: this.model,
-        certificateType: this.certificateType,
-        anchor: this.$.dots,
-      },
-    }));
-  }
-
-  /**
-   * Handles the case where a call to the browser resulted in a rejected
-   * promise.
-   */
-  private onRejected_(error: CertificatesError|null) {
-    if (error === null) {
-      // Nothing to do here. Null indicates that the user clicked "cancel" on a
-      // native file chooser dialog or that the request was ignored by the
-      // handler due to being received while another was still being processed.
-      return;
-    }
-
-    // Otherwise propagate the error to the parents, such that a dialog
-    // displaying the error will be shown.
-    this.dispatchEvent(new CustomEvent('certificates-error', {
-      bubbles: true,
-      composed: true,
-      detail: {error, anchor: null},
-    }));
-  }
-
-  private onViewClick_() {
-    this.closePopupMenu_();
-    this.browserProxy_.viewCertificate(this.model.id);
-  }
-
-  private onEditClick_() {
-    this.closePopupMenu_();
-    this.dispatchCertificateActionEvent_(CertificateAction.EDIT);
-  }
-
-  private onDeleteClick_() {
-    this.closePopupMenu_();
-    this.dispatchCertificateActionEvent_(CertificateAction.DELETE);
-  }
-
-  private onExportClick_() {
-    this.closePopupMenu_();
-    if (this.certificateType === CertificateType.PERSONAL) {
-      this.browserProxy_.exportPersonalCertificate(this.model.id).then(() => {
-        this.dispatchCertificateActionEvent_(CertificateAction.EXPORT_PERSONAL);
-      }, this.onRejected_.bind(this));
-    } else {
-      this.browserProxy_.exportCertificate(this.model.id);
-    }
-  }
-
-  /**
-   * @return Whether the certificate can be edited.
-   */
-  private canEdit_(model: CertificateSubnode): boolean {
-    return model.canBeEdited;
-  }
-
-  /**
-   * @return Whether the certificate can be exported.
-   */
-  private canExport_(
-      certificateType: CertificateType, model: CertificateSubnode): boolean {
-    if (certificateType === CertificateType.PERSONAL) {
-      return model.extractable;
-    }
-    return true;
-  }
-
-  /**
-   * @return Whether the certificate can be deleted.
-   */
-  private canDelete_(model: CertificateSubnode): boolean {
-    return model.canBeDeleted;
-  }
-
-  private closePopupMenu_() {
-    this.shadowRoot!.querySelector('cr-action-menu')!.close();
-  }
-
-  private onDotsClick_() {
-    this.$.menu.get().showAt(this.$.dots);
-  }
-
-  private getPolicyIndicatorType_(model: CertificateSubnode):
-      CrPolicyIndicatorType {
-    return model.policy ? CrPolicyIndicatorType.USER_POLICY :
-                          CrPolicyIndicatorType.NONE;
-  }
-}
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'certificate-subentry': CertificateSubentryElement;
-  }
-}
-
-customElements.define(
-    CertificateSubentryElement.is, CertificateSubentryElement);
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificates_browser_proxy.ts b/ui/webui/resources/cr_components/certificate_manager/certificates_browser_proxy.ts
deleted file mode 100644
index fcffc3f5..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificates_browser_proxy.ts
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview A helper object used from the "Manage certificates" section
- * to interact with the browser.
- */
-
-import {sendWithPromise} from '//resources/js/cr.js';
-
-/**
- * @see chrome/browser/ui/webui/settings/certificates_handler.cc
- */
-export interface CertificateSubnode {
-  extractable: boolean;
-  id: string;
-  name: string;
-  policy: boolean;
-  webTrustAnchor: boolean;
-  canBeDeleted: boolean;
-  canBeEdited: boolean;
-  untrusted: boolean;
-}
-
-/**
- * A data structure describing a certificate that is currently being imported,
- * therefore it has no ID yet, but it has a name. Used within JS only.
- */
-export interface NewCertificateSubNode {
-  name: string;
-}
-
-/**
- * Top-level grouping node in a certificate list, representing an organization
- * and containing certs that belong to the organization in |subnodes|. If a
- * certificate does not have an organization name, it will be grouped under its
- * own CertificatesOrgGroup with |name| set to its display name.
- * @see chrome/browser/ui/webui/settings/certificates_handler.cc
- */
-export interface CertificatesOrgGroup {
-  id: string;
-  name: string;
-  containsPolicyCerts: boolean;
-  subnodes: CertificateSubnode[];
-}
-
-export interface CaTrustInfo {
-  ssl: boolean;
-  email: boolean;
-  objSign: boolean;
-}
-
-/**
- * Generic error returned from C++ via a Promise reject callback.
- * @see chrome/browser/ui/webui/settings/certificates_handler.cc
- */
-export interface CertificatesError {
-  title: string;
-  description: string;
-}
-
-/**
- * Enumeration of all possible certificate types.
- */
-export enum CertificateType {
-  CA = 'ca',
-  OTHER = 'other',
-  PERSONAL = 'personal',
-  SERVER = 'server',
-}
-
-
-/**
- * Error returned from C++ via a Promise reject callback, when some certificates
- * fail to be imported.
- * @see chrome/browser/ui/webui/settings/certificates_handler.cc
- */
-export interface CertificatesImportError {
-  title: string;
-  description: string;
-  certificateErrors: Array<{name: string, error: string}>;
-}
-
-export interface CertificatesBrowserProxy {
-  /**
-   * Triggers 5 events in the following order
-   * 1x 'client-import-allowed-changed' event.
-   * 1x 'ca-import-allowed-changed' event.
-   * 4x 'certificates-changed' event, one for each certificate category.
-   */
-  refreshCertificates(): void;
-
-  viewCertificate(id: string): void;
-
-  exportCertificate(id: string): void;
-
-  /**
-   * @return A promise resolved when the certificate has been
-   *     deleted successfully or rejected with a CertificatesError.
-   */
-  deleteCertificate(id: string): Promise<void>;
-
-  getCaCertificateTrust(id: string): Promise<CaTrustInfo>;
-
-  editCaCertificateTrust(
-      id: string, ssl: boolean, email: boolean,
-      objSign: boolean): Promise<void>;
-
-  cancelImportExportCertificate(): void;
-
-  /**
-   * @return A promise firing once the user has selected
-   *     the export location. A prompt should be shown to asking for a
-   *     password to use for encrypting the file. The password should be
-   *     passed back via a call to
-   *     exportPersonalCertificatePasswordSelected().
-   */
-  exportPersonalCertificate(id: string): Promise<void>;
-
-  exportPersonalCertificatePasswordSelected(password: string): Promise<void>;
-
-  /**
-   * @return A promise firing once the user has selected
-   *     the file to be imported. If true a password prompt should be shown to
-   *     the user, and the password should be passed back via a call to
-   *     importPersonalCertificatePasswordSelected().
-   */
-  importPersonalCertificate(useHardwareBacked: boolean): Promise<boolean>;
-
-  importPersonalCertificatePasswordSelected(password: string): Promise<void>;
-
-  /**
-   * @return A promise firing once the user has selected
-   *     the file to be imported, or failing with CertificatesError.
-   *     Upon success, a prompt should be shown to the user to specify the
-   *     trust levels, and that information should be passed back via a call
-   *     to importCaCertificateTrustSelected().
-   */
-  importCaCertificate(): Promise<string>;
-
-  /**
-   * @return A promise firing once the trust level for the imported
-   *     certificate has been successfully set. The promise is rejected if an
-   *     error occurred with either a CertificatesError or
-   *     CertificatesImportError.
-   */
-  importCaCertificateTrustSelected(
-      ssl: boolean, email: boolean, objSign: boolean): Promise<void>;
-
-  /**
-   * @return A promise firing once the certificate has been
-   *     imported. The promise is rejected if an error occurred, with either
-   *     a CertificatesError or CertificatesImportError.
-   */
-  importServerCertificate(): Promise<void>;
-}
-
-export class CertificatesBrowserProxyImpl implements CertificatesBrowserProxy {
-  refreshCertificates() {
-    chrome.send('refreshCertificates');
-  }
-
-  viewCertificate(id: string) {
-    chrome.send('viewCertificate', [id]);
-  }
-
-  exportCertificate(id: string) {
-    chrome.send('exportCertificate', [id]);
-  }
-
-  deleteCertificate(id: string) {
-    return sendWithPromise('deleteCertificate', id);
-  }
-
-  exportPersonalCertificate(id: string) {
-    return sendWithPromise('exportPersonalCertificate', id);
-  }
-
-  exportPersonalCertificatePasswordSelected(password: string) {
-    return sendWithPromise(
-        'exportPersonalCertificatePasswordSelected', password);
-  }
-
-  importPersonalCertificate(useHardwareBacked: boolean) {
-    return sendWithPromise('importPersonalCertificate', useHardwareBacked);
-  }
-
-  importPersonalCertificatePasswordSelected(password: string) {
-    return sendWithPromise(
-        'importPersonalCertificatePasswordSelected', password);
-  }
-
-  getCaCertificateTrust(id: string) {
-    return sendWithPromise('getCaCertificateTrust', id);
-  }
-
-  editCaCertificateTrust(
-      id: string, ssl: boolean, email: boolean, objSign: boolean) {
-    return sendWithPromise('editCaCertificateTrust', id, ssl, email, objSign);
-  }
-
-  importCaCertificateTrustSelected(
-      ssl: boolean, email: boolean, objSign: boolean) {
-    return sendWithPromise(
-        'importCaCertificateTrustSelected', ssl, email, objSign);
-  }
-
-  cancelImportExportCertificate() {
-    chrome.send('cancelImportExportCertificate');
-  }
-
-  importCaCertificate() {
-    return sendWithPromise('importCaCertificate');
-  }
-
-  importServerCertificate() {
-    return sendWithPromise('importServerCertificate');
-  }
-
-  static getInstance(): CertificatesBrowserProxy {
-    return instance || (instance = new CertificatesBrowserProxyImpl());
-  }
-
-  static setInstance(obj: CertificatesBrowserProxy) {
-    instance = obj;
-  }
-}
-
-// The singleton instance_ is replaced with a test version of this wrapper
-// during testing.
-let instance: CertificatesBrowserProxy|null = null;
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.html b/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.html
deleted file mode 100644
index d61a1ec..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.html
+++ /dev/null
@@ -1,17 +0,0 @@
-    <style include="certificate-shared"></style>
-    <cr-dialog id="dialog" show-on-attach close-text="[[i18n('close')]]">
-      <div slot="title">[[model.title]]</div>
-      <div slot="body">
-        <div>[[model.description]]</div>
-        <template is="dom-if" if="[[model.certificateErrors]]">
-          <template is="dom-repeat" items="[[model.certificateErrors]]">
-            <div>[[getCertificateErrorText_(item)]]</div>
-          </template>
-        </template>
-      </div>
-      <div slot="button-container">
-        <cr-button id="ok" class="action-button" on-click="onOkClick_">
-          [[i18n('ok')]]
-        </cr-button>
-      </div>
-    </cr-dialog>
diff --git a/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.ts b/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.ts
deleted file mode 100644
index 30b3008..0000000
--- a/ui/webui/resources/cr_components/certificate_manager/certificates_error_dialog.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview A dialog for showing SSL certificate related error messages.
- * The user can only close the dialog, there is no other possible interaction.
- */
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import './certificate_shared.css.js';
-
-import type {CrDialogElement} from '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import {I18nMixin} from '//resources/cr_elements/i18n_mixin.js';
-import {loadTimeData} from '//resources/js/load_time_data.js';
-import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import type {CertificatesError, CertificatesImportError} from './certificates_browser_proxy.js';
-import {getTemplate} from './certificates_error_dialog.html.js';
-
-interface CertificatesErrorDialogElement {
-  $: {
-    dialog: CrDialogElement,
-  };
-}
-
-const CertificatesErrorDialogElementBase = I18nMixin(PolymerElement);
-
-class CertificatesErrorDialogElement extends
-    CertificatesErrorDialogElementBase {
-  static get is() {
-    return 'certificates-error-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      model: Object,
-    };
-  }
-
-  declare model: CertificatesError|CertificatesImportError;
-
-  private onOkClick_() {
-    this.$.dialog.close();
-  }
-
-  private getCertificateErrorText_(importError: {name: string, error: string}):
-      string {
-    return loadTimeData.getStringF(
-        'certificateImportErrorFormat', importError.name, importError.error);
-  }
-}
-
-customElements.define(
-    CertificatesErrorDialogElement.is, CertificatesErrorDialogElement);
diff --git a/ui/webui/resources/cr_components/searchbox/searchbox_dropdown.html b/ui/webui/resources/cr_components/searchbox/searchbox_dropdown.html
index 20ad7d3c..b83728cb 100644
--- a/ui/webui/resources/cr_components/searchbox/searchbox_dropdown.html
+++ b/ui/webui/resources/cr_components/searchbox/searchbox_dropdown.html
@@ -32,7 +32,6 @@
   .header {
     align-items: center;
     box-sizing: border-box;
-    cursor: pointer;
     display: flex;
     font-size: inherit;
     font-weight: inherit;
diff --git a/v8 b/v8
index d39bd40..6cd9d55 160000
--- a/v8
+++ b/v8
@@ -1 +1 @@
-Subproject commit d39bd40aa3585340bba5d178b96ec4a7ee597a50
+Subproject commit 6cd9d55b3be68f3ba3ad48c83f878a156bc0430a